ceph: introduce a new inode flag indicating if cached dentries are ordered
authorYan, Zheng <zyan@redhat.com>
Wed, 22 Oct 2014 01:09:56 +0000 (18:09 -0700)
committerIlya Dryomov <idryomov@redhat.com>
Wed, 17 Dec 2014 17:09:50 +0000 (20:09 +0300)
After creating/deleting/renaming file, offsets of sibling dentries may
change. So we can not use cached dentries to satisfy readdir. But we can
still use the cached dentries to conclude -ENOENT for lookup.

This patch introduces a new inode flag indicating if child dentries are
ordered. The flag is set at the same time marking a directory complete.
After creating/deleting/renaming file, we clear the flag on directory
inode. This prevents ceph_readdir() from using cached dentries to satisfy
readdir syscall.

Signed-off-by: Yan, Zheng <zyan@redhat.com>
fs/ceph/dir.c
fs/ceph/inode.c
fs/ceph/super.h

diff --cc fs/ceph/dir.c
Simple merge
diff --cc fs/ceph/inode.c
Simple merge
diff --cc fs/ceph/super.h
Simple merge