From f365ae5507004e9e3fc34f9ed9243938220852fd Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 11 Jun 2009 13:17:06 -0700 Subject: [PATCH] uclient: mark down failed mds --- src/client/Client.cc | 9 +++++++++ src/client/Client.h | 1 + 2 files changed, 10 insertions(+) diff --git a/src/client/Client.cc b/src/client/Client.cc index dc6ebce849c99..085fe7cea61ea 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -887,6 +887,7 @@ void Client::handle_client_session(MClientSession *m) switch (m->get_op()) { case CEPH_SESSION_OPEN: mds_sessions[from].seq = 0; + mds_sessions[from].inst = m->get_source_inst(); break; case CEPH_SESSION_CLOSE: @@ -1115,6 +1116,14 @@ void Client::handle_mds_map(MMDSMap* m) dout(1) << "handle_mds_map epoch " << m->get_epoch() << dendl; mdsmap->decode(m->get_encoded()); + + // reset session + for (map::iterator p = mds_sessions.begin(); + p != mds_sessions.end(); + p++) + if (!mdsmap->is_up(p->first) || + mdsmap->get_inst(p->first) != p->second.inst) + messenger->mark_down(p->second.inst.addr); // send reconnect? if (frommds >= 0 && diff --git a/src/client/Client.h b/src/client/Client.h index 97eb4a5f92a07..29fac459f1382 100644 --- a/src/client/Client.h +++ b/src/client/Client.h @@ -577,6 +577,7 @@ public: __u64 cap_gen; utime_t cap_ttl, last_cap_renew_request; int num_caps; + entity_inst_t inst; MClientCapRelease *release; -- 2.39.5