summary refs log tree commit diff
path: root/fs/isofs/namei.c
diff options
context:
space:
mode:
authorJan Kara <jack@suse.cz>2011-07-21 22:22:25 +0200
committerAl Viro <viro@zeniv.linux.org.uk>2011-07-22 19:42:12 -0400
commitd769b3c2ab7184ddd42056595b627cc871caa90e (patch)
treeb030270648c2a2aca7c5417e2ae0436ec7d0a31c /fs/isofs/namei.c
parent22ba747f660c0acd14761628c24aa972d18058a0 (diff)
downloadlinux-d769b3c2ab7184ddd42056595b627cc871caa90e.tar.gz
isofs: Remove global fs lock
sbi->s_mutex isn't needed for isofs at all so we can just remove it. Generally,
since isofs is always mounted read-only, filesystem structure cannot change
under us.  So buffer_head contents stays constant after it's filled in. That
leaves us with possible changes of global data structures. Superblock changes
only during filesystem mount (even remount does not change it), inodes are only
filled in during reading from disk. So there are no changes of these structures
to bother about.

Arguments why sbi->s_mutex can be removed at each place:
isofs_readdir: Accesses sb, inode, filp, local variables => s_mutex not needed
isofs_lookup: Protected by directory's i_mutex. Accesses sb, inode, dentry,
  local variables => s_mutex not needed
rock_ridge_symlink_readpage: Protected by page lock. Accesses sb, inode,
  local variables => s_mutex not needed.

Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/isofs/namei.c')
-rw-r--r--fs/isofs/namei.c4
1 files changed, 0 insertions, 4 deletions
diff --git a/fs/isofs/namei.c b/fs/isofs/namei.c
index 68fa503d877e..1e2946f2a69e 100644
--- a/fs/isofs/namei.c
+++ b/fs/isofs/namei.c
@@ -168,7 +168,6 @@ struct dentry *isofs_lookup(struct inode *dir, struct dentry *dentry, struct nam
 	int found;
 	unsigned long uninitialized_var(block);
 	unsigned long uninitialized_var(offset);
-	struct isofs_sb_info *sbi = ISOFS_SB(dir->i_sb);
 	struct inode *inode;
 	struct page *page;
 
@@ -176,7 +175,6 @@ struct dentry *isofs_lookup(struct inode *dir, struct dentry *dentry, struct nam
 	if (!page)
 		return ERR_PTR(-ENOMEM);
 
-	mutex_lock(&sbi->s_mutex);
 	found = isofs_find_entry(dir, dentry,
 				&block, &offset,
 				page_address(page),
@@ -185,7 +183,5 @@ struct dentry *isofs_lookup(struct inode *dir, struct dentry *dentry, struct nam
 
 	inode = found ? isofs_iget(dir->i_sb, block, offset) : NULL;
 
-	mutex_unlock(&sbi->s_mutex);
-
 	return d_splice_alias(inode, dentry);
 }