summaryrefslogtreecommitdiffstats
path: root/fs/hfs/extent.c
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1999-01-04 16:03:48 +0000
committerRalf Baechle <ralf@linux-mips.org>1999-01-04 16:03:48 +0000
commit78c388aed2b7184182c08428db1de6c872d815f5 (patch)
tree4b2003b1b4ceb241a17faa995da8dd1004bb8e45 /fs/hfs/extent.c
parenteb7a5bf93aaa4be1d7c6181100ab7639e74d67f7 (diff)
Merge with Linux 2.1.131 and more MIPS goodies.
(Did I mention that CVS is buggy ...)
Diffstat (limited to 'fs/hfs/extent.c')
-rw-r--r--fs/hfs/extent.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/hfs/extent.c b/fs/hfs/extent.c
index 03d6b0acd..1fc749f34 100644
--- a/fs/hfs/extent.c
+++ b/fs/hfs/extent.c
@@ -339,6 +339,7 @@ static void delete_extent(struct hfs_fork *fork, struct hfs_extent *ext)
if (error) {
hfs_warn("hfs_truncate: error %d deleting an extent.\n", error);
}
+
HFS_DELETE(ext);
}
@@ -486,6 +487,7 @@ static void shrink_fork(struct hfs_fork *fork, int ablocks)
if ((count = next + 1 - ablocks) > 0) {
for (i=2; (i>=0) && !ext->length[i]; --i) {};
+ lock_bitmap(mdb);
while (count && (ext->length[i] <= count)) {
ext->end -= ext->length[i];
count -= ext->length[i];
@@ -508,6 +510,7 @@ static void shrink_fork(struct hfs_fork *fork, int ablocks)
"blocks.\n", error);
}
}
+ unlock_bitmap(mdb);
update_ext(fork, ext);
}
@@ -611,7 +614,9 @@ more_extents:
} else {
if (!(ext = new_extent(fork, ext, blocks/ablksz,
start, len, ablksz))) {
+ lock_bitmap(mdb);
hfs_clear_vbm_bits(mdb, start, len);
+ unlock_bitmap(mdb);
return;
}
}