gefs: use broke() when we get a corrupt block

now that broke() doesn't abort the whole fs, but instead
makes it go read-only, it makes sense to just use it in
all cases that get a corrupt block
This commit is contained in:
Ori Bernstein 2025-01-06 02:45:53 +00:00
parent ce4926cfc2
commit b3d44a5141
3 changed files with 4 additions and 9 deletions

View file

@ -118,12 +118,8 @@ readblk(Blk *b, Bptr bp, int flg)
xh = bp.hash; xh = bp.hash;
ck = blkhash(b); ck = blkhash(b);
} }
if((!flg&GBnochk) && ck != xh){ if((!flg&GBnochk) && ck != xh)
if(!(flg&GBsoftchk)) broke("%s: %ullx %llux != %llux", Ecorrupt, bp.addr, xh, ck);
broke("%s: %ullx %llux != %llux", Ecorrupt, bp.addr, xh, ck);
fprint(2, "%s: %ullx %llux != %llux", Ecorrupt, bp.addr, xh, ck);
error(Ecorrupt);
}
assert(b->magic == Magic); assert(b->magic == Magic);
} }

View file

@ -269,7 +269,6 @@ enum {
GBraw = 1<<0, GBraw = 1<<0,
GBwrite = 1<<1, GBwrite = 1<<1,
GBnochk = 1<<2, GBnochk = 1<<2,
GBsoftchk = 1<<3,
}; };
enum { enum {

View file

@ -27,13 +27,13 @@ loadarena(Arena *a, Bptr hd)
h0 = nil; h0 = nil;
h1 = nil; h1 = nil;
if(!waserror()){ if(!waserror()){
h0 = getblk(bp, GBsoftchk); h0 = getblk(bp, 0);
poperror(); poperror();
}else }else
print("loading arena primary header: %s\n", errmsg()); print("loading arena primary header: %s\n", errmsg());
bp.addr += Blksz; bp.addr += Blksz;
if(!waserror()){ if(!waserror()){
h1 = getblk(bp, GBsoftchk); h1 = getblk(bp, 0);
poperror(); poperror();
}else }else
print("loading arena backup header: %s\n", errmsg()); print("loading arena backup header: %s\n", errmsg());