From af25aa1197fba3b09b17ba5b75ccff9e0a8a3cea Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 30 May 2018 10:43:44 -0500 Subject: [PATCH] client: switch to addrvec for MetaSession Signed-off-by: Sage Weil --- src/client/Client.cc | 19 +++++++++---------- src/client/Client.h | 2 +- src/client/MetaSession.cc | 2 +- src/client/MetaSession.h | 7 ++++--- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/client/Client.cc b/src/client/Client.cc index 2f1ee6a34d0..0e92b886c21 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -1994,17 +1994,17 @@ void Client::update_metadata(std::string const &k, std::string const &v) MetaSession *Client::_open_mds_session(mds_rank_t mds) { ldout(cct, 10) << __func__ << " mds." << mds << dendl; - entity_inst_t inst = mdsmap->get_inst(mds); + auto addrs = mdsmap->get_addrs(mds); auto em = mds_sessions.emplace(std::piecewise_construct, std::forward_as_tuple(mds), - std::forward_as_tuple(mds, messenger->get_connection(inst), inst)); + std::forward_as_tuple(mds, messenger->connect_to_mds(addrs), addrs)); assert(em.second); /* not already present */ MetaSession *session = &em.first->second; // Maybe skip sending a request to open if this MDS daemon // has previously sent us a REJECT. if (rejected_by_mds.count(mds)) { - if (rejected_by_mds[mds] == session->inst) { + if (rejected_by_mds[mds] == session->addrs) { ldout(cct, 4) << __func__ << " mds." << mds << " skipping " "because we were rejected" << dendl; return session; @@ -2096,7 +2096,7 @@ void Client::handle_client_session(MClientSession *m) break; case CEPH_SESSION_REJECT: - rejected_by_mds[session->mds_num] = session->inst; + rejected_by_mds[session->mds_num] = session->addrs; _closed_mds_session(session); break; @@ -2648,9 +2648,9 @@ void Client::handle_mds_map(MMDSMap* m) int newstate = mdsmap->get_state(mds); if (!mdsmap->is_up(mds)) { session->con->mark_down(); - } else if (mdsmap->get_inst(mds) != session->inst) { + } else if (mdsmap->get_addrs(mds) != session->addrs) { session->con->mark_down(); - session->inst = mdsmap->get_inst(mds); + session->addrs = mdsmap->get_addrs(mds); // When new MDS starts to take over, notify kernel to trim unused entries // in its dcache/icache. Hopefully, the kernel will release some unused // inodes before the new MDS enters reconnect state. @@ -2660,7 +2660,7 @@ void Client::handle_mds_map(MMDSMap* m) session->mds_state = newstate; if (newstate == MDSMap::STATE_RECONNECT) { - session->con = messenger->get_connection(session->inst); + session->con = messenger->connect_to_mds(session->addrs); send_reconnect(session); } else if (newstate >= MDSMap::STATE_ACTIVE) { if (oldstate < MDSMap::STATE_ACTIVE) { @@ -5580,8 +5580,7 @@ int Client::mds_command( const auto info = fsmap->get_info_gid(target_gid); // Open a connection to the target MDS - entity_inst_t inst = info.get_inst(); - ConnectionRef conn = messenger->get_connection(inst); + ConnectionRef conn = messenger->connect_to_mds(info.get_addrs()); // Generate MDSCommandOp state auto &op = command_table.start_command(); @@ -13540,7 +13539,7 @@ void Client::ms_handle_remote_reset(Connection *con) mds_rank_t mds = MDS_RANK_NONE; MetaSession *s = NULL; for (auto &p : mds_sessions) { - if (mdsmap->get_addr(p.first) == con->get_peer_addr()) { + if (mdsmap->get_addrs(p.first) == con->get_peer_addrs()) { mds = p.first; s = &p.second; } diff --git a/src/client/Client.h b/src/client/Client.h index 94537ddb405..cb0af08c74e 100644 --- a/src/client/Client.h +++ b/src/client/Client.h @@ -390,7 +390,7 @@ protected: // contact it again. Remember which inst rejected us, so that // when we talk to another inst with the same rank we can // try again. - std::map rejected_by_mds; + std::map rejected_by_mds; int local_osd; epoch_t local_osd_epoch; diff --git a/src/client/MetaSession.cc b/src/client/MetaSession.cc index 1b369e576c5..b721fb105d0 100644 --- a/src/client/MetaSession.cc +++ b/src/client/MetaSession.cc @@ -24,7 +24,7 @@ const char *MetaSession::get_state_name() const void MetaSession::dump(Formatter *f) const { f->dump_int("mds", mds_num); - f->dump_stream("addr") << inst.addr; + f->dump_object("addrs", addrs); f->dump_unsigned("seq", seq); f->dump_unsigned("cap_gen", cap_gen); f->dump_stream("cap_ttl") << cap_ttl; diff --git a/src/client/MetaSession.h b/src/client/MetaSession.h index 8aad3dbe104..08159ac08b5 100644 --- a/src/client/MetaSession.h +++ b/src/client/MetaSession.h @@ -23,7 +23,7 @@ struct MetaSession { uint64_t cap_gen; utime_t cap_ttl, last_cap_renew_request; uint64_t cap_renew_seq; - entity_inst_t inst; + entity_addrvec_t addrs; enum { STATE_NEW, // Unused @@ -48,9 +48,10 @@ struct MetaSession { boost::intrusive_ptr release; - MetaSession(mds_rank_t mds_num, ConnectionRef con, entity_inst_t inst) + MetaSession(mds_rank_t mds_num, ConnectionRef con, + const entity_addrvec_t& addrs) : mds_num(mds_num), con(con), - seq(0), cap_gen(0), cap_renew_seq(0), inst(inst), + seq(0), cap_gen(0), cap_renew_seq(0), addrs(addrs), state(STATE_OPENING), mds_state(MDSMap::STATE_NULL), readonly(false) {} -- 2.39.5