ceph: clear dir complete on d_move
d_move() reorders the d_subdirs list, breaking the readdir result caching. Unless/until d_move preserves that ordering, clear CEPH_I_COMPLETE on rename. Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
parent
66f41d4c5c
commit
c10f5e12ba
|
@ -997,6 +997,10 @@ int ceph_fill_trace(struct super_block *sb, struct ceph_mds_request *req,
|
|||
dn, dn->d_name.len, dn->d_name.name);
|
||||
dout("fill_trace doing d_move %p -> %p\n",
|
||||
req->r_old_dentry, dn);
|
||||
|
||||
/* d_move screws up d_subdirs order */
|
||||
ceph_i_clear(dir, CEPH_I_COMPLETE);
|
||||
|
||||
d_move(req->r_old_dentry, dn);
|
||||
dout(" src %p '%.*s' dst %p '%.*s'\n",
|
||||
req->r_old_dentry,
|
||||
|
|
Loading…
Reference in a new issue