ceph: avoid dcache readdir for snapdir
We should always go to the MDS for readdir on the hidden snapdir. The set of snapshots can change at any time; the client can't trust its cache for that. Signed-off-by: Sage Weil <sage@newdream.net>
This commit is contained in:
@@ -266,6 +266,7 @@ static int ceph_readdir(struct file *filp, void *dirent, filldir_t filldir)
|
|||||||
spin_lock(&inode->i_lock);
|
spin_lock(&inode->i_lock);
|
||||||
if ((filp->f_pos == 2 || fi->dentry) &&
|
if ((filp->f_pos == 2 || fi->dentry) &&
|
||||||
!ceph_test_opt(client, NOASYNCREADDIR) &&
|
!ceph_test_opt(client, NOASYNCREADDIR) &&
|
||||||
|
ceph_snap(inode) != CEPH_SNAPDIR &&
|
||||||
(ci->i_ceph_flags & CEPH_I_COMPLETE) &&
|
(ci->i_ceph_flags & CEPH_I_COMPLETE) &&
|
||||||
__ceph_caps_issued_mask(ci, CEPH_CAP_FILE_SHARED, 1)) {
|
__ceph_caps_issued_mask(ci, CEPH_CAP_FILE_SHARED, 1)) {
|
||||||
err = __dcache_readdir(filp, dirent, filldir);
|
err = __dcache_readdir(filp, dirent, filldir);
|
||||||
|
Reference in New Issue
Block a user