Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7892f2f4 authored by Ingo Molnar's avatar Ingo Molnar Committed by Ingo Molnar
Browse files

[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: default avatarIngo Molnar <mingo@elte.hu>
parent 1b1dcc1b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
}
+1 −1
Original line number Diff line number Diff line
@@ -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;
}
+1 −1
Original line number Diff line number Diff line
@@ -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);
+3 −3
Original line number Diff line number Diff line
@@ -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;
@@ -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);
}

/*