commit d3ed220f9f662f662e8ecccadcfd4fb0f706ed99
Author: Yiannis Pericleous <[EMAIL PROTECTED]>
Date:   Wed May 30 14:37:10 2007 -0400

    bugfix: dont move to /odf/sr if same inode number is already there

diff --git a/fs/unionfs/odf.c b/fs/unionfs/odf.c
index 
39440ad61e985a4443cd0802ee42ebdd6609469f..5ecdf17a7d8164022436278dc83279bd014c85b9
 100644
--- a/fs/unionfs/odf.c
+++ b/fs/unionfs/odf.c
@@ -387,9 +387,14 @@ int odf_reclaim(struct dentry *dentry, i
                goto out;
        }
 
-       lock_rename(old_dentry->d_parent, new_dentry->d_parent);
-       err = vfs_rename(old_dir, old_dentry, new_dir->d_inode, new_dentry);
-       unlock_rename(old_dentry->d_parent, new_dentry->d_parent);
+       /* if the new_dentry is already in /odf/sr we can just unlink it */
+       if (sr && new_dentry->d_inode)
+               vfs_unlink(old_dir, odf_dentry);
+       else {
+               lock_rename(old_dentry->d_parent, new_dentry->d_parent);
+               err = vfs_rename(old_dir, old_dentry, new_dir->d_inode, 
new_dentry);
+               unlock_rename(old_dentry->d_parent, new_dentry->d_parent);
+       }
        dput(new_dentry);
 
 out:
_______________________________________________
unionfs-cvs mailing list: http://unionfs.filesystems.org/
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs

Reply via email to