commit a5e87f0256837674d2a002dcaa07c805369829b8
Author: Yiannis Pericleous <[EMAIL PROTECTED]>
Date:   Tue May 29 12:36:38 2007 -0400

    modified odf_release_sr to unlink instead of renaming to /odf/reclaim

diff --git a/fs/unionfs/odf.c b/fs/unionfs/odf.c
index 0ca46f6..2a7791d 100644
--- a/fs/unionfs/odf.c
+++ b/fs/unionfs/odf.c
@@ -393,13 +393,11 @@ out:
        return err;
 }
 
-/* Check if the given inode has an entry in /odf/sr and move this
- * to /odf/rc so it can be cleaned by the cleanup thread
- */
+/* Check if the given inode has an entry in /odf/sr and unlink it */
 int odf_release_sr(struct inode *inode)
 {
-       struct dentry *old_dentry = NULL, *new_dentry = NULL;
-       struct dentry *sr, *rc;
+       struct dentry *odf_dentry = NULL;
+       struct dentry *sr;
        char name[ODF_INAME_LEN];
        int err = 0;
 
@@ -407,47 +405,30 @@ int odf_release_sr(struct inode *inode)
        gid_t oldgid = current->fsgid;
 
        sr = UNIONFS_SB(inode->i_sb)->odf.sr;
-       rc = UNIONFS_SB(inode->i_sb)->odf.rc;
        memset(name, 0, ODF_INAME_LEN);
-       if (!name){
-               err = -ENOMEM;
-               goto out;
-       }
+
        sprintf(name, "%lu", inode->i_ino);
 
        /* LOCK: need to lock sr? */
 
        /* check for an entry in /odf/sr */
-       old_dentry = lookup_one_len(name, sr, strlen(name));
-       if (IS_ERR(old_dentry)) {
-               err = PTR_ERR(old_dentry);
-               old_dentry = NULL;
-               goto out_unlock;
-       }
-       if (!old_dentry->d_inode)
-               goto out_unlock;
-
-       /* move it to /odf/rc with the same name */
-       new_dentry = lookup_one_len(name, rc, strlen(name));
-       if (IS_ERR(new_dentry)) {
-               err = PTR_ERR(new_dentry);
-               new_dentry = NULL;
-               goto out_unlock;
+       odf_dentry = lookup_one_len(name, sr, strlen(name));
+       if (IS_ERR(odf_dentry)) {
+               err = PTR_ERR(odf_dentry);
+               odf_dentry = NULL;
+               goto out;
        }
+       if (!odf_dentry->d_inode)
+               goto out;
 
-       lock_rename(old_dentry->d_parent, new_dentry->d_parent);
        current->fsuid = 0;
        current->fsgid = 0;
-       err = vfs_rename(old_dentry->d_parent->d_inode, old_dentry,
-                               new_dentry->d_parent->d_inode, new_dentry);
+       err = vfs_unlink(sr->d_inode, odf_dentry);
        current->fsuid = olduid;
        current->fsgid = oldgid;
-       unlock_rename(old_dentry->d_parent, new_dentry->d_parent);
 
-out_unlock:
-       dput(old_dentry);
-       dput(new_dentry);
 out:
+       dput(odf_dentry);
        return err;
 }
 
_______________________________________________
unionfs-cvs mailing list: http://unionfs.filesystems.org/
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs

Reply via email to