diff options
author | Ingo Molnar <mingo@elte.hu> | 2006-01-09 18:59:25 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@hera.kernel.org> | 2006-01-09 18:59:25 -0500 |
commit | 7892f2f48d165a34b0b8130c8a195dfd807b8cb6 (patch) | |
tree | 592b29350c168aa5758700820ab22fb56e72a567 | |
parent | 1b1dcc1b57a49136f118a0f16367256ff9994a69 (diff) |
[PATCH] mutex subsystem, semaphore to mutex: VFS, sb->s_lock
This patch converts the superblock-lock semaphore to a mutex, affecting
lock_super()/unlock_super(). Tested on ext3 and XFS.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r-- | fs/ext3/super.c | 2 | ||||
-rw-r--r-- | fs/ocfs2/super.c | 2 | ||||
-rw-r--r-- | fs/super.c | 2 | ||||
-rw-r--r-- | include/linux/fs.h | 6 |
4 files changed, 6 insertions, 6 deletions
diff --git a/fs/ext3/super.c b/fs/ext3/super.c index c3dbebdb989..56bf7658601 100644 --- a/fs/ext3/super.c +++ b/fs/ext3/super.c | |||
@@ -2150,7 +2150,7 @@ int ext3_force_commit(struct super_block *sb) | |||
2150 | 2150 | ||
2151 | static void ext3_write_super (struct super_block * sb) | 2151 | static void ext3_write_super (struct super_block * sb) |
2152 | { | 2152 | { |
2153 | if (down_trylock(&sb->s_lock) == 0) | 2153 | if (mutex_trylock(&sb->s_lock) != 0) |
2154 | BUG(); | 2154 | BUG(); |
2155 | sb->s_dirt = 0; | 2155 | sb->s_dirt = 0; |
2156 | } | 2156 | } |
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c index 48bf7f0ce54..364d64bd5f1 100644 --- a/fs/ocfs2/super.c +++ b/fs/ocfs2/super.c | |||
@@ -169,7 +169,7 @@ static match_table_t tokens = { | |||
169 | */ | 169 | */ |
170 | static void ocfs2_write_super(struct super_block *sb) | 170 | static void ocfs2_write_super(struct super_block *sb) |
171 | { | 171 | { |
172 | if (down_trylock(&sb->s_lock) == 0) | 172 | if (mutex_trylock(&sb->s_lock) != 0) |
173 | BUG(); | 173 | BUG(); |
174 | sb->s_dirt = 0; | 174 | sb->s_dirt = 0; |
175 | } | 175 | } |
diff --git a/fs/super.c b/fs/super.c index 0a30e51692c..c177b92419c 100644 --- a/fs/super.c +++ b/fs/super.c | |||
@@ -72,7 +72,7 @@ static struct super_block *alloc_super(void) | |||
72 | INIT_HLIST_HEAD(&s->s_anon); | 72 | INIT_HLIST_HEAD(&s->s_anon); |
73 | INIT_LIST_HEAD(&s->s_inodes); | 73 | INIT_LIST_HEAD(&s->s_inodes); |
74 | init_rwsem(&s->s_umount); | 74 | init_rwsem(&s->s_umount); |
75 | sema_init(&s->s_lock, 1); | 75 | mutex_init(&s->s_lock); |
76 | down_write(&s->s_umount); | 76 | down_write(&s->s_umount); |
77 | s->s_count = S_BIAS; | 77 | s->s_count = S_BIAS; |
78 | atomic_set(&s->s_active, 1); | 78 | atomic_set(&s->s_active, 1); |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 01654b218e4..92ae3e2067b 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
@@ -821,7 +821,7 @@ struct super_block { | |||
821 | unsigned long s_magic; | 821 | unsigned long s_magic; |
822 | struct dentry *s_root; | 822 | struct dentry *s_root; |
823 | struct rw_semaphore s_umount; | 823 | struct rw_semaphore s_umount; |
824 | struct semaphore s_lock; | 824 | struct mutex s_lock; |
825 | int s_count; | 825 | int s_count; |
826 | int s_syncing; | 826 | int s_syncing; |
827 | int s_need_sync_fs; | 827 | int s_need_sync_fs; |
@@ -893,13 +893,13 @@ static inline int has_fs_excl(void) | |||
893 | static inline void lock_super(struct super_block * sb) | 893 | static inline void lock_super(struct super_block * sb) |
894 | { | 894 | { |
895 | get_fs_excl(); | 895 | get_fs_excl(); |
896 | down(&sb->s_lock); | 896 | mutex_lock(&sb->s_lock); |
897 | } | 897 | } |
898 | 898 | ||
899 | static inline void unlock_super(struct super_block * sb) | 899 | static inline void unlock_super(struct super_block * sb) |
900 | { | 900 | { |
901 | put_fs_excl(); | 901 | put_fs_excl(); |
902 | up(&sb->s_lock); | 902 | mutex_unlock(&sb->s_lock); |
903 | } | 903 | } |
904 | 904 | ||
905 | /* | 905 | /* |