shithub: gefs

Download patch

ref: f2456e4c89f7b8d7513772f9e24c41f3070c16d8
parent: a0d4209f2bbf4db9399e65c3d1779b3748968c4a
author: Ori Bernstein <ori@eigenstate.org>
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();