From: "Yan, Zheng" <zheng.z.yan@xxxxxxxxx> Signed-off-by: Yan, Zheng <zheng.z.yan@xxxxxxxxx> --- src/mds/MDCache.cc | 10 ++++++++++ src/mds/MDCache.h | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index f102205..6853bf1 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -2914,6 +2914,8 @@ void MDCache::maybe_resolve_finish() recalc_auth_bits(); trim_non_auth(); mds->resolve_done(); + } else { + maybe_send_pending_rejoins(); } } } @@ -3398,6 +3400,13 @@ void MDCache::rejoin_send_rejoins() { dout(10) << "rejoin_send_rejoins with recovery_set " << recovery_set << dendl; + if (!resolve_gather.empty()) { + dout(7) << "rejoin_send_rejoins still waiting for resolves (" + << resolve_gather << ")" << dendl; + rejoins_pending = true; + return; + } + map<int, MMDSCacheRejoin*> rejoins; // encode cap list once. @@ -3571,6 +3580,7 @@ void MDCache::rejoin_send_rejoins() mds->send_message_mds(p->second, p->first); } rejoin_ack_gather.insert(mds->whoami); // we need to complete rejoin_gather_finish, too + rejoins_pending = false; // nothing? if (mds->is_rejoin() && rejoins.empty()) { diff --git a/src/mds/MDCache.h b/src/mds/MDCache.h index 278debf..379f715 100644 --- a/src/mds/MDCache.h +++ b/src/mds/MDCache.h @@ -383,6 +383,7 @@ public: protected: // [rejoin] + bool rejoins_pending; set<int> rejoin_gather; // nodes from whom i need a rejoin set<int> rejoin_sent; // nodes i sent a rejoin to set<int> rejoin_ack_gather; // nodes from whom i need a rejoin ack @@ -417,6 +418,10 @@ protected: void handle_cache_rejoin_full(MMDSCacheRejoin *m); void rejoin_send_acks(); void rejoin_trim_undef_inodes(); + void maybe_send_pending_rejoins() { + if (rejoins_pending) + rejoin_send_rejoins(); + } public: void rejoin_gather_finish(); void rejoin_send_rejoins(); -- 1.7.11.7 -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html