Signed-off-by: Erez Zadok <ezk@cs.sunysb.edu>
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);
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 &&