ref: f2456e4c89f7b8d7513772f9e24c41f3070c16d8
parent: a0d4209f2bbf4db9399e65c3d1779b3748968c4a
author: Ori Bernstein <[email protected]>
date: Sat Dec 9 15:52:52 EST 2023
check: scan all trees, even if erroring
--- a/check.c
+++ b/check.c
@@ -201,6 +201,10 @@
while(1){
if(!btnext(&s, &s.kv))
break;
+ if(waserror()){
+ fprint(fd, "moving on: %s\n", errmsg());
+ continue;
+ }
memcpy(name, s.kv.k+1, s.kv.nk-1);
name[s.kv.nk-1] = 0;
if((t = opensnap(name, nil)) == nil){
@@ -209,18 +213,11 @@
break;
}
fprint(fd, "checking snap %s: %B\n", name, t->bp);
- if((b = getroot(t, &height)) == nil){
- fprint(fd, "unable to get root %B\n", t->bp);
- ok = 0;
- if((b = getblk(t->bp, GBnochk)) != nil){
- showblk(fd, b, "corrupt", 0);
- dropblk(b);
- }
- continue;
- }
+ b = getroot(t, &height);
if(badtree(fd, b, height-1, nil, 0))
ok = 0;
dropblk(b);
+ poperror();
}
btexit(&s);
poperror();