summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYan, Zheng <zheng.z.yan@intel.com>2014-03-03 05:20:44 +0400
committerYan, Zheng <zheng.z.yan@intel.com>2014-04-03 06:33:52 +0400
commit15289dc85b2d03d42d7e479476254be2b17c65d5 (patch)
tree707fcbc2650015c8217cea0fe5008df38066ba78
parentdcd3cc05e5f230f8fbc0c3369a5d6ad4f1d23aed (diff)
downloadlinux-15289dc85b2d03d42d7e479476254be2b17c65d5.tar.xz
ceph: let MDS adjust readdir 'frag'
If readdir 'frag' is adjusted, readdir 'offset' should be reset. Otherwise some dentries may be lost when readdir and fragmenting directory happen at the some. Another way to fix this issue is let MDS adjust readdir 'frag'. The code that handles MDS reply reset the readdir 'offset' if the readdir reply is different than the requested one. Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
-rw-r--r--fs/ceph/dir.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
index 8ce8833e9c02..e9918a0306d1 100644
--- a/fs/ceph/dir.c
+++ b/fs/ceph/dir.c
@@ -322,9 +322,6 @@ more:
fi->last_readdir = NULL;
}
- /* requery frag tree, as the frag topology may have changed */
- frag = ceph_choose_frag(ceph_inode(inode), frag, NULL, NULL);
-
dout("readdir fetching %llx.%llx frag %x offset '%s'\n",
ceph_vinop(inode), frag, fi->last_name);
req = ceph_mdsc_create_request(mdsc, op, USE_AUTH_MDS);