]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
mds: handle interaction between slave rollback and fragmenting
authorYan, Zheng <zheng.z.yan@intel.com>
Wed, 19 Mar 2014 11:56:26 +0000 (19:56 +0800)
committerYan, Zheng <zheng.z.yan@intel.com>
Fri, 28 Mar 2014 18:08:13 +0000 (02:08 +0800)
commit6963a8f9cb8392a091e3bbfadc0e4c6e76d9206e
tree474174cc877c0fe920cd36ac6699aec19d600157
parent0dcb54f71e64085cbb2c34269af30b6b711336db
mds: handle interaction between slave rollback and fragmenting

For slave rename and rmdir events, the MDS needs to preserve non-auth
dirfrag where the renamed inode originally lives in until slave commit
event is encountered. Current method to handle this is use MDCache::
uncommitted_slave_rename_olddir to track any non-auth dirfrag that
need to be preserved. This method does not works well if any preserved
dirfrag gets fragmented by log event (such as ESubtreeMap) between the
slave prepare event and the slave commit event.

The fix is tracking inode of dirfrag instead of tracking dirfrag that
need to preserved directly.

Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
src/mds/MDCache.cc
src/mds/MDCache.h
src/mds/Mutation.h
src/mds/Server.cc
src/mds/journal.cc