summaryrefslogtreecommitdiff
path: root/sys/src/cmd/hjfs/fs1.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2012-11-15 16:43:35 +0100
committercinap_lenrek <cinap_lenrek@gmx.de>2012-11-15 16:43:35 +0100
commitdf829e6c07ddc515fa6c00e4baa888dfaecbd26d (patch)
treead203af66897546e81293ab4e21df305458c1936 /sys/src/cmd/hjfs/fs1.c
parent7ced300071e59a22a8afddee2a4bb242987ea214 (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.c8
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));