提交 3084b72d 编写于 作者: M Matthias Kaehlcke 提交者: Linus Torvalds

hfs: convert bitmap_lock in a mutex

Apple Macintosh file system: The semaphore bitmap_lock is used as a mutex.
Convert it to the mutex API
Signed-off-by: NMatthias Kaehlcke <matthias@kaehlcke.net>
Cc: Roman Zippel <zippel@linux-m68k.org>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 de0ca06a
...@@ -145,7 +145,7 @@ u32 hfs_vbm_search_free(struct super_block *sb, u32 goal, u32 *num_bits) ...@@ -145,7 +145,7 @@ u32 hfs_vbm_search_free(struct super_block *sb, u32 goal, u32 *num_bits)
if (!*num_bits) if (!*num_bits)
return 0; return 0;
down(&HFS_SB(sb)->bitmap_lock); mutex_lock(&HFS_SB(sb)->bitmap_lock);
bitmap = HFS_SB(sb)->bitmap; bitmap = HFS_SB(sb)->bitmap;
pos = hfs_find_set_zero_bits(bitmap, HFS_SB(sb)->fs_ablocks, goal, num_bits); pos = hfs_find_set_zero_bits(bitmap, HFS_SB(sb)->fs_ablocks, goal, num_bits);
...@@ -162,7 +162,7 @@ u32 hfs_vbm_search_free(struct super_block *sb, u32 goal, u32 *num_bits) ...@@ -162,7 +162,7 @@ u32 hfs_vbm_search_free(struct super_block *sb, u32 goal, u32 *num_bits)
HFS_SB(sb)->free_ablocks -= *num_bits; HFS_SB(sb)->free_ablocks -= *num_bits;
hfs_bitmap_dirty(sb); hfs_bitmap_dirty(sb);
out: out:
up(&HFS_SB(sb)->bitmap_lock); mutex_unlock(&HFS_SB(sb)->bitmap_lock);
return pos; return pos;
} }
...@@ -205,7 +205,7 @@ int hfs_clear_vbm_bits(struct super_block *sb, u16 start, u16 count) ...@@ -205,7 +205,7 @@ int hfs_clear_vbm_bits(struct super_block *sb, u16 start, u16 count)
if ((start + count) > HFS_SB(sb)->fs_ablocks) if ((start + count) > HFS_SB(sb)->fs_ablocks)
return -2; return -2;
down(&HFS_SB(sb)->bitmap_lock); mutex_lock(&HFS_SB(sb)->bitmap_lock);
/* bitmap is always on a 32-bit boundary */ /* bitmap is always on a 32-bit boundary */
curr = HFS_SB(sb)->bitmap + (start / 32); curr = HFS_SB(sb)->bitmap + (start / 32);
len = count; len = count;
...@@ -236,7 +236,7 @@ int hfs_clear_vbm_bits(struct super_block *sb, u16 start, u16 count) ...@@ -236,7 +236,7 @@ int hfs_clear_vbm_bits(struct super_block *sb, u16 start, u16 count)
} }
out: out:
HFS_SB(sb)->free_ablocks += len; HFS_SB(sb)->free_ablocks += len;
up(&HFS_SB(sb)->bitmap_lock); mutex_unlock(&HFS_SB(sb)->bitmap_lock);
hfs_bitmap_dirty(sb); hfs_bitmap_dirty(sb);
return 0; return 0;
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/mutex.h>
#include <linux/buffer_head.h> #include <linux/buffer_head.h>
#include <linux/fs.h> #include <linux/fs.h>
...@@ -139,7 +140,7 @@ struct hfs_sb_info { ...@@ -139,7 +140,7 @@ struct hfs_sb_info {
struct nls_table *nls_io, *nls_disk; struct nls_table *nls_io, *nls_disk;
struct semaphore bitmap_lock; struct mutex bitmap_lock;
unsigned long flags; unsigned long flags;
......
...@@ -372,7 +372,7 @@ static int hfs_fill_super(struct super_block *sb, void *data, int silent) ...@@ -372,7 +372,7 @@ static int hfs_fill_super(struct super_block *sb, void *data, int silent)
sb->s_op = &hfs_super_operations; sb->s_op = &hfs_super_operations;
sb->s_flags |= MS_NODIRATIME; sb->s_flags |= MS_NODIRATIME;
init_MUTEX(&sbi->bitmap_lock); mutex_init(&sbi->bitmap_lock);
res = hfs_mdb_get(sb); res = hfs_mdb_get(sb);
if (res) { if (res) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册