From: Yan, Zheng Date: Wed, 7 May 2014 02:54:07 +0000 (+0800) Subject: mds: journal EImportFinish after adjusting subtree auth X-Git-Tag: v0.82~56^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=08b79ea8885d054df49fbb99e28d3de172e20a77;p=ceph.git mds: journal EImportFinish after adjusting subtree auth Submitting EImportFinish may journal an extra ESubtreeMap as side effect. The ESubtreeMap should reflects subtree state after import is finished. Signed-off-by: Yan, Zheng --- diff --git a/src/mds/MDLog.cc b/src/mds/MDLog.cc index c224695671b..7b4ba13f223 100644 --- a/src/mds/MDLog.cc +++ b/src/mds/MDLog.cc @@ -222,7 +222,7 @@ void MDLog::submit_entry(LogEvent *le, Context *c) if (le->get_type() == EVENT_SUBTREEMAP || (le->get_type() == EVENT_IMPORTFINISH && mds->is_resolve())) { // avoid infinite loop when ESubtreeMap is very large. - // don not insert ESubtreeMap among EImportFinish events that finish + // do not insert ESubtreeMap among EImportFinish events that finish // disambiguate imports. Because the ESubtreeMap reflects the subtree // state when all EImportFinish events are replayed. } else if (journaler->get_write_pos()/period != last_seg/period) { diff --git a/src/mds/Migrator.cc b/src/mds/Migrator.cc index 9ba5bcdb8a3..11475846d99 100644 --- a/src/mds/Migrator.cc +++ b/src/mds/Migrator.cc @@ -2628,10 +2628,11 @@ void Migrator::import_finish(CDir *dir, bool notify, bool last) MutationRef mut = it->second.mut; import_state.erase(it); - mds->mdlog->start_submit_entry(new EImportFinish(dir, true)); - // adjust auth, with possible subtree merge. cache->adjust_subtree_auth(dir, mds->get_nodeid()); + + mds->mdlog->start_submit_entry(new EImportFinish(dir, true)); + cache->try_subtree_merge(dir); // NOTE: this may journal subtree_map as sideffect // process delayed expires