commit acdf42d2799721be2357588748ac273bfd3df42a
Author: Rachita Kothiyal <[EMAIL PROTECTED]>
Date: Thu Nov 22 00:34:28 2007 -0500
Unionfs: Fix deadlock on unionfs superblock read/write semaphore.
Added missing unionfs_read_lock() on the superblock object.
Signed-off-by: Rachita Kothiyal([EMAIL PROTECTED])
diff --git a/fs/unionfs/dirhelper.c b/fs/unionfs/dirhelper.c
index c3cc9a3..3e72638 100644
--- a/fs/unionfs/dirhelper.c
+++ b/fs/unionfs/dirhelper.c
@@ -218,6 +218,7 @@ int check_empty(struct dentry *dentry, struct
unionfs_dir_state **namelist)
int bindex, bstart, bend, bopaque;
sb = dentry->d_sb;
+ unionfs_read_lock(sb);
BUG_ON(!S_ISDIR(dentry->d_inode->i_mode));
diff --git a/fs/unionfs/inode.c b/fs/unionfs/inode.c
index e4ca03a..82c2398 100644
--- a/fs/unionfs/inode.c
+++ b/fs/unionfs/inode.c
@@ -345,6 +345,7 @@ static int unionfs_symlink(struct inode *dir, struct dentry
*dentry,
umode_t mode;
int bstart;
+ unionfs_read_lock(dentry->d_sb);
unionfs_lock_dentry(dentry);
if (unlikely(dentry->d_inode &&
@@ -550,6 +551,7 @@ static int unionfs_mknod(struct inode *dir, struct dentry
*dentry, int mode,
struct dentry *lower_parent_dentry = NULL;
int bstart;
+ unionfs_read_lock(dentry->d_sb);
unionfs_lock_dentry(dentry);
if (unlikely(dentry->d_inode &&
@@ -721,7 +723,6 @@ static void unionfs_put_link(struct dentry *dentry, struct
nameidata *nd,
{
unionfs_read_lock(dentry->d_sb);
- unionfs_read_lock(dentry->d_sb);
unionfs_lock_dentry(dentry);
if (unlikely(!__unionfs_d_revalidate_chain(dentry, nd, false)))
printk(KERN_ERR
_______________________________________________
unionfs-cvs mailing list: http://unionfs.filesystems.org/
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs