aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2006-01-09 18:59:25 -0500
committerIngo Molnar <mingo@hera.kernel.org>2006-01-09 18:59:25 -0500
commit7892f2f48d165a34b0b8130c8a195dfd807b8cb6 (patch)
tree592b29350c168aa5758700820ab22fb56e72a567
parent1b1dcc1b57a49136f118a0f16367256ff9994a69 (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.c2
-rw-r--r--fs/ocfs2/super.c2
-rw-r--r--fs/super.c2
-rw-r--r--include/linux/fs.h6
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
2151static void ext3_write_super (struct super_block * sb) 2151static 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 */
170static void ocfs2_write_super(struct super_block *sb) 170static 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)
893static inline void lock_super(struct super_block * sb) 893static 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
899static inline void unlock_super(struct super_block * sb) 899static 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/*