ref: e890a999ee2142ff650df78730bff516d347ec66
parent: 076b2649290d831a8f67ae58e0add8cb1e3750e2
author: Ori Bernstein <ori@eigenstate.org>
date: Tue Jan 2 10:18:42 EST 2024
check: add isfree checks
--- a/check.c
+++ b/check.c
@@ -198,26 +198,22 @@
}
static int
-checkdata(int, Tree *t)
+checkdlist(int fd)
{
char pfx[1];
- Bptr bp;
+ Dlist dl;
Scan s;
- Blk *b;
- pfx[0] = Klabel;
+ checklog(fd, fs->snapdl.hd);
+ pfx[0] = Kdlist;
btnewscan(&s, pfx, 1);
- btenter(t, &s);
+ btenter(&fs->snap, &s);
while(1){
if(!btnext(&s, &s.kv))
break;
- bp = unpackbp(s.kv.v, s.kv.nv);
- if(isfree(bp.addr)){
- fprint(2, "free block in use: %B\n", bp);
- error("free block in use");
- }
- b = getblk(bp, GBraw);
- dropblk(b);
+ kv2dlist(&s.kv, &dl);
+ if(!checklog(fd, dl.hd))
+ print("bad dlist %P: %s\n", &s.kv, errmsg());
}
btexit(&s);
return 0;
@@ -224,22 +220,26 @@
}
static int
-checkdlist(int fd)
+checkdata(int, Tree *t)
{
char pfx[1];
- Dlist dl;
+ Bptr bp;
Scan s;
+ Blk *b;
- checklog(fd, fs->snapdl.hd);
- pfx[0] = Kdlist;
+ pfx[0] = Klabel;
btnewscan(&s, pfx, 1);
- btenter(&fs->snap, &s);
+ btenter(t, &s);
while(1){
if(!btnext(&s, &s.kv))
break;
- kv2dlist(&s.kv, &dl);
- if(!checklog(fd, dl.hd))
- print("bad dlist %P: %s\n", &s.kv, errmsg());
+ bp = unpackbp(s.kv.v, s.kv.nv);
+ if(isfree(bp.addr)){
+ fprint(2, "free block in use: %B\n", bp);
+ error("free block in use");
+ }
+ b = getblk(bp, GBraw);
+ dropblk(b);
}
btexit(&s);
return 0;