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 <zheng.z.yan@intel.com>
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) {
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