GIT: unionfs2-2.6.27.y: Unionfs: remove unnecessary conditional inode lock

Erez Zadok ezk at fsl.cs.sunysb.edu
Thu Aug 12 23:17:36 EDT 2010


commit 18aba2eef84d671c4af5eaf524f997fc595a9fd1
Author: Erez Zadok <ezk at cs.sunysb.edu>
Date:   Thu Dec 20 15:22:22 2007 -0500

    Unionfs: remove unnecessary conditional inode lock
    
    This was intended to protect the inode during branch management, but that is
    now done through our superblock rwsem.
    
    Signed-off-by: Erez Zadok <ezk at cs.sunysb.edu>

diff --git a/fs/unionfs/dentry.c b/fs/unionfs/dentry.c
index 68c07ba..dc1aa39 100644
--- a/fs/unionfs/dentry.c
+++ b/fs/unionfs/dentry.c
@@ -33,7 +33,6 @@ static bool __unionfs_d_revalidate_one(struct dentry *dentry,
 	int bindex, bstart, bend;
 	int sbgen, dgen;
 	int positive = 0;
-	int locked = 0;
 	int interpose_flag;
 	struct nameidata lowernd; /* TODO: be gentler to the stack */
 
@@ -87,16 +86,6 @@ static bool __unionfs_d_revalidate_one(struct dentry *dentry,
 		interpose_flag = INTERPOSE_REVAL_NEG;
 		if (positive) {
 			interpose_flag = INTERPOSE_REVAL;
-			/*
-			 * During BRM, the VFS could already hold a lock on
-			 * a file being read, so don't lock it again
-			 * (deadlock), but if you lock it in this function,
-			 * then release it here too.
-			 */
-			if (!mutex_is_locked(&dentry->d_inode->i_mutex)) {
-				mutex_lock(&dentry->d_inode->i_mutex);
-				locked = 1;
-			}
 
 			bstart = ibstart(dentry->d_inode);
 			bend = ibend(dentry->d_inode);
@@ -115,8 +104,6 @@ static bool __unionfs_d_revalidate_one(struct dentry *dentry,
 			UNIONFS_I(dentry->d_inode)->lower_inodes = NULL;
 			ibstart(dentry->d_inode) = -1;
 			ibend(dentry->d_inode) = -1;
-			if (locked)
-				mutex_unlock(&dentry->d_inode->i_mutex);
 		}
 
 		result = unionfs_lookup_backend(dentry, &lowernd,


More information about the unionfs-cvs mailing list