]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
client: switch to addrvec for MetaSession
authorSage Weil <sage@redhat.com>
Wed, 30 May 2018 15:43:44 +0000 (10:43 -0500)
committerSage Weil <sage@redhat.com>
Thu, 31 May 2018 13:10:23 +0000 (08:10 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/client/Client.cc
src/client/Client.h
src/client/MetaSession.cc
src/client/MetaSession.h

index 2f1ee6a34d0329c5f3b3a22ecef0de4bb5b54136..0e92b886c2155c6333016b15c1e3068e4b627dff 100644 (file)
@@ -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;
        }
index 94537ddb405d4e584a5e0fea3b72e1ee7aff996e..cb0af08c74e506e3f82f0345ab072638912dddd5 100644 (file)
@@ -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<mds_rank_t, entity_inst_t> rejected_by_mds;
+  std::map<mds_rank_t, entity_addrvec_t> rejected_by_mds;
 
   int local_osd;
   epoch_t local_osd_epoch;
index 1b369e576c55d478f6af7768f2800bf0650ff87c..b721fb105d0819958edd5641f0f7f1ba4ab5a090 100644 (file)
@@ -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;
index 8aad3dbe104fd18e050174b0993bef754c21d0d2..08159ac08b5715635a428ea9d464002b617d3919 100644 (file)
@@ -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<MClientCapRelease> 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)
   {}