]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
MDCache: make scrub_dentry schedulable and reentrant
authorGreg Farnum <greg@inktank.com>
Fri, 29 Aug 2014 06:03:59 +0000 (23:03 -0700)
committerGreg Farnum <gfarnum@redhat.com>
Fri, 7 Nov 2014 20:53:02 +0000 (12:53 -0800)
commitf82f6efec9f398d13638a77e4590006e53c460d0
treee7164d5392197e67f987bfc5b9a0b787ad729147
parent391740215d2c1de032fb4b6e6fd1aa94e30593fc
MDCache: make scrub_dentry schedulable and reentrant

Rather than assuming that any necessary inodes are in the cache, split up
MDCache::scrub_dentry into setup and work phases. Add an internal_op_finisher()
to MDRequest. Dispatch any CEPH_MDS_OP_VALIDATE internal operations to
scrub_dentry_work(). Taken together, these make everything work properly when
path_traverse() (by way of rdlock_path_pin_ref()) needs to go to disk before
satisfying the lookup.

Signed-off-by: Greg Farnum <greg@inktank.com>
src/mds/CInode.cc
src/mds/MDCache.cc
src/mds/MDCache.h
src/mds/Mutation.h