diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-11-15 16:43:35 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2012-11-15 16:43:35 +0100 |
commit | df829e6c07ddc515fa6c00e4baa888dfaecbd26d (patch) | |
tree | ad203af66897546e81293ab4e21df305458c1936 /sys/src/cmd/hjfs/fs1.c | |
parent | 7ced300071e59a22a8afddee2a4bb242987ea214 (diff) |
hjfs: fix more missing dirty marks, error handling, cleanup
Diffstat (limited to 'sys/src/cmd/hjfs/fs1.c')
-rw-r--r-- | sys/src/cmd/hjfs/fs1.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/src/cmd/hjfs/fs1.c b/sys/src/cmd/hjfs/fs1.c index c1571483c..472e8852d 100644 --- a/sys/src/cmd/hjfs/fs1.c +++ b/sys/src/cmd/hjfs/fs1.c @@ -549,6 +549,7 @@ getblk(Fs *fs, FLoc *L, Buf *bd, uvlong blk, uvlong *r, int mode) if(b == nil) return -1; memset(b->offs, 0, sizeof(b->offs)); + b->op |= BDELWRI; }else{ if(mode != GBREAD && chref(fs, *loc, 0) > 1){ if(dumpblk(fs, L, loc) < 0){ @@ -632,9 +633,10 @@ delindir(Fs *fs, uvlong *l, int n) b = getbuf(fs->d, *l, TINDIR, 0); if(b != nil){ for(k = 0; k < OFFPERBLK; k++) - if(b->offs[k] != 0) + if(b->offs[k] != 0){ delindir(fs, &b->offs[k], n-1); - b->op |= BDELWRI; + b->op |= BDELWRI; + } putbuf(b); } } @@ -702,6 +704,7 @@ trunc(Fs *fs, FLoc *ll, Buf *bd, uvlong size) if(d->db[blk] != 0){ putfree(fs, d->db[blk]); d->db[blk] = 0; + bd->op |= BDELWRI; } blk++; } @@ -856,6 +859,7 @@ delete(Fs *fs, FLoc *l, Buf *b) if((d->type & QTDIR) == 0){ trunc(fs, l, b, 0); memset(d, 0, sizeof(*d)); + b->op |= BDELWRI; return 0; } first = last = emalloc(sizeof(Del)); |