Skip to content

Commit

Permalink
[PATCH] mutex subsystem, semaphore to mutex: VFS, sb->s_lock
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Ingo Molnar authored and Ingo Molnar committed Jan 9, 2006
1 parent 1b1dcc1 commit 7892f2f
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 6 deletions.
2 changes: 1 addition & 1 deletion fs/ext3/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -2150,7 +2150,7 @@ int ext3_force_commit(struct super_block *sb)

static void ext3_write_super (struct super_block * sb)
{
if (down_trylock(&sb->s_lock) == 0)
if (mutex_trylock(&sb->s_lock) != 0)
BUG();
sb->s_dirt = 0;
}
Expand Down
2 changes: 1 addition & 1 deletion fs/ocfs2/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ static match_table_t tokens = {
*/
static void ocfs2_write_super(struct super_block *sb)
{
if (down_trylock(&sb->s_lock) == 0)
if (mutex_trylock(&sb->s_lock) != 0)
BUG();
sb->s_dirt = 0;
}
Expand Down
2 changes: 1 addition & 1 deletion fs/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ static struct super_block *alloc_super(void)
INIT_HLIST_HEAD(&s->s_anon);
INIT_LIST_HEAD(&s->s_inodes);
init_rwsem(&s->s_umount);
sema_init(&s->s_lock, 1);
mutex_init(&s->s_lock);
down_write(&s->s_umount);
s->s_count = S_BIAS;
atomic_set(&s->s_active, 1);
Expand Down
6 changes: 3 additions & 3 deletions include/linux/fs.h
Original file line number Diff line number Diff line change
Expand Up @@ -821,7 +821,7 @@ struct super_block {
unsigned long s_magic;
struct dentry *s_root;
struct rw_semaphore s_umount;
struct semaphore s_lock;
struct mutex s_lock;
int s_count;
int s_syncing;
int s_need_sync_fs;
Expand Down Expand Up @@ -893,13 +893,13 @@ static inline int has_fs_excl(void)
static inline void lock_super(struct super_block * sb)
{
get_fs_excl();
down(&sb->s_lock);
mutex_lock(&sb->s_lock);
}

static inline void unlock_super(struct super_block * sb)
{
put_fs_excl();
up(&sb->s_lock);
mutex_unlock(&sb->s_lock);
}

/*
Expand Down

0 comments on commit 7892f2f

Please sign in to comment.