diff options
| -rw-r--r-- | fs/ceph/dir.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c index ea8ee2e526aa..650d2db5ed26 100644 --- a/fs/ceph/dir.c +++ b/fs/ceph/dir.c | |||
| @@ -880,7 +880,16 @@ static int ceph_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
| 880 | * do_request, above). If there is no trace, we need | 880 | * do_request, above). If there is no trace, we need |
| 881 | * to do it here. | 881 | * to do it here. |
| 882 | */ | 882 | */ |
| 883 | |||
| 884 | /* d_move screws up d_subdirs order */ | ||
| 885 | ceph_i_clear(new_dir, CEPH_I_COMPLETE); | ||
| 886 | |||
| 883 | d_move(old_dentry, new_dentry); | 887 | d_move(old_dentry, new_dentry); |
| 888 | |||
| 889 | /* ensure target dentry is invalidated, despite | ||
| 890 | rehashing bug in vfs_rename_dir */ | ||
| 891 | new_dentry->d_time = jiffies; | ||
| 892 | ceph_dentry(new_dentry)->lease_shared_gen = 0; | ||
| 884 | } | 893 | } |
| 885 | ceph_mdsc_put_request(req); | 894 | ceph_mdsc_put_request(req); |
| 886 | return err; | 895 | return err; |
