aboutsummaryrefslogtreecommitdiffstats
path: root/fs/namei.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-09-24 18:28:50 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-09-24 18:28:50 -0400
commitb7a818e4fcd2c3ee8c34c2367d345561c4c76a15 (patch)
tree7d05ad4a8eadd18cce315af47ccd91304c4f72c3 /fs/namei.c
parent398477d4bd57cc33792fd93035c2763ad78629c4 (diff)
parent0d5dc6c2dd7a3cd2b2f505b0625c4ec9c0e5b4f0 (diff)
Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mfasheh/ocfs2: (28 commits) ocfs2: Teach ocfs2_drop_lock() to use ->set_lvb() callback ocfs2: Remove ->unblock lockres operation ocfs2: move downconvert worker to lockres ops ocfs2: Remove unused dlmglue functions ocfs2: Have the metadata lock use generic dlmglue functions ocfs2: Add ->set_lvb callback in dlmglue ocfs2: Add ->check_downconvert callback in dlmglue ocfs2: Check for refreshing locks in generic unblock function ocfs2: don't unconditionally pass LVB flags ocfs2: combine inode and generic blocking AST functions ocfs2: Add ->get_osb() dlmglue locking operation ocfs2: remove ->unlock_ast() callback from ocfs2_lock_res_ops ocfs2: combine inode and generic AST functions ocfs2: Clean up lock resource refresh flags ocfs2: Remove i_generation from inode lock names ocfs2: Encode i_generation in the meta data lvb ocfs2: Free up some space in the lvb ocfs2: Remove special casing for inode creation in ocfs2_dentry_attach_lock() ocfs2: manually d_move() during ocfs2_rename() [PATCH] Allow file systems to manually d_move() inside of ->rename() ...
Diffstat (limited to 'fs/namei.c')
-rw-r--r--fs/namei.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/namei.c b/fs/namei.c
index 432d6bc6fab0..6b591c01b09f 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -2370,7 +2370,8 @@ static int vfs_rename_dir(struct inode *old_dir, struct dentry *old_dentry,
2370 dput(new_dentry); 2370 dput(new_dentry);
2371 } 2371 }
2372 if (!error) 2372 if (!error)
2373 d_move(old_dentry,new_dentry); 2373 if (!(old_dir->i_sb->s_type->fs_flags & FS_RENAME_DOES_D_MOVE))
2374 d_move(old_dentry,new_dentry);
2374 return error; 2375 return error;
2375} 2376}
2376 2377
@@ -2393,8 +2394,7 @@ static int vfs_rename_other(struct inode *old_dir, struct dentry *old_dentry,
2393 else 2394 else
2394 error = old_dir->i_op->rename(old_dir, old_dentry, new_dir, new_dentry); 2395 error = old_dir->i_op->rename(old_dir, old_dentry, new_dir, new_dentry);
2395 if (!error) { 2396 if (!error) {
2396 /* The following d_move() should become unconditional */ 2397 if (!(old_dir->i_sb->s_type->fs_flags & FS_RENAME_DOES_D_MOVE))
2397 if (!(old_dir->i_sb->s_type->fs_flags & FS_ODD_RENAME))
2398 d_move(old_dentry, new_dentry); 2398 d_move(old_dentry, new_dentry);
2399 } 2399 }
2400 if (target) 2400 if (target)