diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2016-05-13 03:13:50 +0300 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2016-05-13 03:13:50 +0300 |
commit | 9717a91b01feda644f45fd63624a641385ef8f2d (patch) | |
tree | c2abccf2e761596b361146de3041143f7db21c29 /fs/hfs/catalog.c | |
parent | 323ee8fc544d407eb053471b9607f95f987f5f12 (diff) | |
download | linux-9717a91b01feda644f45fd63624a641385ef8f2d.tar.xz |
hfs: switch to ->iterate_shared()
exact parallel of hfsplus analogue
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/hfs/catalog.c')
-rw-r--r-- | fs/hfs/catalog.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/hfs/catalog.c b/fs/hfs/catalog.c index 1eb5d415d434..98cde8ba5dc2 100644 --- a/fs/hfs/catalog.c +++ b/fs/hfs/catalog.c @@ -240,10 +240,13 @@ int hfs_cat_delete(u32 cnid, struct inode *dir, struct qstr *str) } } + /* we only need to take spinlock for exclusion with ->release() */ + spin_lock(&HFS_I(dir)->open_dir_lock); list_for_each_entry(rd, &HFS_I(dir)->open_dir_list, list) { if (fd.tree->keycmp(fd.search_key, (void *)&rd->key) < 0) rd->file->f_pos--; } + spin_unlock(&HFS_I(dir)->open_dir_lock); res = hfs_brec_remove(&fd); if (res) |