ceph: fix __dcache_readdir()
authorYan, Zheng <zheng.z.yan@intel.com>
Thu, 13 Feb 2014 11:40:26 +0000 (19:40 +0800)
committerSage Weil <sage@inktank.com>
Mon, 17 Feb 2014 20:37:13 +0000 (12:37 -0800)
commit4d5f5df673ee673851986b5a492a9752fbb39dc5
tree5c203121ffa8d1d1edfacbd541282115f0f5e832
parent45195e42c78ea91135108207dbcaf75e5556a309
ceph: fix __dcache_readdir()

If directory is fragmented, readdir() read its dirfrags one by one.
After reading all dirfrags, the corresponding dentries are sorted in
(frag_t, off) order in the dcache. If dentries of a directory are all
cached, __dcache_readdir() can use the cached dentries to satisfy
readdir syscall. But when checking if a given dentry is after the
position of readdir, __dcache_readdir() compares numerical value of
frag_t directly. This is wrong, it should use ceph_frag_compare().

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
fs/ceph/dir.c