diff options
author | aiju <aiju@phicode.de> | 2012-08-08 10:14:20 +0200 |
---|---|---|
committer | aiju <aiju@phicode.de> | 2012-08-08 10:14:20 +0200 |
commit | 9e608833e922c318b431aead7874a8f8f1539ae7 (patch) | |
tree | 25f41f5a4ac655eb2b0e2214d4bd0a450d762505 /sys/src/cmd/hjfs/dump.c | |
parent | f2c70fe2f708446794af299b1130b7aaf8dc73e5 (diff) |
hjfs: various fixes
Diffstat (limited to 'sys/src/cmd/hjfs/dump.c')
-rw-r--r-- | sys/src/cmd/hjfs/dump.c | 13 |
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); |