Unionfs: remove obsolete lookup code for 2.6.9
authorErez Zadok <ezk@cs.sunysb.edu>
Sat, 20 Sep 2008 05:33:46 +0000 (01:33 -0400)
committerErez Zadok <ezk@cs.sunysb.edu>
Sat, 20 Sep 2008 05:33:46 +0000 (01:33 -0400)
Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu>
fs/unionfs/inode.c
fs/unionfs/rename.c

index eef83b833ef8cd8a716ee77a8e678afd1abeebb4..564ef34581fee18af67e9ae7dda38c3a9af858af 100644 (file)
@@ -203,8 +203,6 @@ static struct dentry *unionfs_lookup(struct inode *dir,
        unionfs_unlock_dentry(dentry); /* locked in new_dentry_private data */
 
 out:
-       if (!IS_ERR(ret) && d_unhashed(dentry)) /* needed in 2.6.9 */
-               d_rehash(dentry);
        unionfs_unlock_parent(dentry, parent);
        unionfs_read_unlock(dentry->d_sb);
 
index 1dcff222fdd33ffb133a411b6a759b11b785bf0d..62ddf9489a69321fcc3931a4b03c759b002419b0 100644 (file)
@@ -525,6 +525,13 @@ out:
        if (err)                /* clear the new_dentry stuff created */
                d_drop(new_dentry);
 
+       /*
+        * vfs_rename_other in 2.6.9 doesn't rehash the new_dentry, but
+        * vfs_rename_dir does.  So we have to fix it here.
+        */
+       if (!err && d_unhashed(new_dentry))     /* needed in 2.6.9 */
+               d_rehash(new_dentry);
+
        unionfs_double_unlock_dentry(old_dentry, new_dentry);
        if (new_parent != old_dentry &&
            new_parent != new_dentry &&