commit 9d1d89dbf85eddb51f6b56c7aa892022e5495fcc
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 39440ad..5ecdf17 100644
--- a/fs/unionfs/odf.c
+++ b/fs/unionfs/odf.c
@@ -387,9 +387,14 @@ int odf_reclaim(struct dentry *dentry, int sr)
                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