Jan Engelhardt:
> Twice?

Since they are GET_PARENT-ed twice.

unionfs_create()
{
        ;;;
                hidden_dir_dentry = GET_PARENT(whiteout_dentry);
                GET_PARENT(whiteout_dentry);
                lock_rename(hidden_dir_dentry, hidden_dir_dentry);
        ;;;
}


here is another patch.

diff -u -p -r1.1 inode.c
--- inode.c     20 Nov 2005 04:06:50 -0000      1.1
+++ inode.c     22 Nov 2005 16:45:58 -0000
@@ -88,7 +92,6 @@ static int unionfs_create(struct inode *
 
                /* They are in the same directory, but we need to get it twice. 
*/
                hidden_dir_dentry = GET_PARENT(whiteout_dentry);
-               GET_PARENT(whiteout_dentry);
                lock_rename(hidden_dir_dentry, hidden_dir_dentry);
 
                if (!(err = is_robranch_super(dentry->d_sb, bstart))) {
@@ -107,6 +110,7 @@ static int unionfs_create(struct inode *
 
                /* This will dput our double gotten parent. */
                unlock_rename(hidden_dir_dentry, hidden_dir_dentry);
+               DPUT(hidden_dir_dentry);
 
                DPUT(new_hidden_dentry);
 

Junjiro Okajima
_______________________________________________
unionfs mailing list
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs

Reply via email to