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