ref: 31ff354ea65c8f0904ecec1842abdc9df650ba18
parent: 7ebf10d47b1795719f77c47f0b0880a423a0a512
author: Ori Bernstein <[email protected]>
date: Sun Feb 25 23:05:34 EST 2024
WIP
--- a/fs.c
+++ b/fs.c
@@ -59,6 +59,7 @@
{
Mount *mnt;
Arena *a;
+ Dlist dl;
int i;
@@ -117,6 +118,10 @@
finalize(fs->sb0);
finalize(fs->sb1);
fs->snap.dirty = 0;
+ dl = fs->snapdl;
+ fs->snapdl.hd = Zb;
+ fs->snapdl.tl = Zb;
+ fs->snapdl.ins = nil;
qunlock(&fs->mutlk);
/*
@@ -154,7 +159,7 @@
* Pass 4: clean up the old snap tree's deadlist
*/
tracem("snapdl");
- freedl(&fs->snapdl, 1);
+ freedl(&dl, 1);
fs->snapdl.hd.addr = -1;
fs->snapdl.hd.hash = -1;
fs->snapdl.hd.gen = -1;
--- a/snap.c
+++ b/snap.c
@@ -169,7 +169,7 @@
}
bp = b->logp;
traceb("dlfreeb", b->bp);
- freeblk(&fs->snap, b, b->bp);
+ freeblk(nil, b, b->bp);
dropblk(b);
}
}
@@ -522,6 +522,7 @@
Dlist *dl, *n;
tracem("dlsync");
+ dlflush(&fs->snapdl);
for(dl = fs->dlhead; dl != nil; dl = n){
n = dl->cnext;
dlflush(dl);