summaryrefslogtreecommitdiff
path: root/sys/src/cmd/hjfs/dump.c
diff options
context:
space:
mode:
authoraiju <aiju@phicode.de>2012-08-08 10:14:20 +0200
committeraiju <aiju@phicode.de>2012-08-08 10:14:20 +0200
commit9e608833e922c318b431aead7874a8f8f1539ae7 (patch)
tree25f41f5a4ac655eb2b0e2214d4bd0a450d762505 /sys/src/cmd/hjfs/dump.c
parentf2c70fe2f708446794af299b1130b7aaf8dc73e5 (diff)
hjfs: various fixes
Diffstat (limited to 'sys/src/cmd/hjfs/dump.c')
-rw-r--r--sys/src/cmd/hjfs/dump.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/sys/src/cmd/hjfs/dump.c b/sys/src/cmd/hjfs/dump.c
index 1136172aa..ba6dd5fc0 100644
--- a/sys/src/cmd/hjfs/dump.c
+++ b/sys/src/cmd/hjfs/dump.c
@@ -50,6 +50,15 @@ copydentry(Fs *fs, FLoc *a, Loc *b, char *nname)
return 0;
}
+static void
+resetldumped(Fs *fs)
+{
+ Loc *l;
+
+ for(l = fs->rootloc->gnext; l != fs->rootloc; l = l->gnext)
+ l->flags &= ~LDUMPED;
+}
+
int
fsdump(Fs *fs)
{
@@ -94,6 +103,7 @@ fsdump(Fs *fs)
putbuf(b);
rc = copydentry(fs, fs->rootloc, ch->loc, buf);
chanclunk(ch);
+ resetldumped(fs);
wunlock(fs);
return rc;
err:
@@ -110,6 +120,8 @@ willmodify(Fs *fs, Loc *l, int nolock)
Dentry *d;
int rc;
+ if((l->flags & LDUMPED) != 0)
+ return 1;
if(!nolock){
again:
runlock(fs);
@@ -154,6 +166,7 @@ found:
putbuf(p);
l->blk = r;
done:
+ l->flags |= LDUMPED;
if(!nolock){
wunlock(fs);
rlock(fs);