]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: use common send message mechanisms 24048/head
authorPatrick Donnelly <pdonnell@redhat.com>
Wed, 12 Sep 2018 01:59:03 +0000 (18:59 -0700)
committerPatrick Donnelly <pdonnell@redhat.com>
Wed, 12 Sep 2018 13:40:29 +0000 (06:40 -0700)
Fixes: http://tracker.ceph.com/issues/26961
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
src/mds/MDCache.cc
src/mds/MDSRank.cc
src/mds/Server.cc

index 462bd2957f1835c48b301c4acee7c43803ac0f70..b5622e7819c76a3b3dbfd6f01a8d9b029abb979c 100644 (file)
@@ -8828,6 +8828,7 @@ void MDCache::handle_open_ino(const MMDSOpenIno::const_ref &m, int err)
 
   dout(10) << "handle_open_ino " << *m << " err " << err << dendl;
 
+  auto from = mds_rank_t(m->get_source().num());
   inodeno_t ino = m->ino;
   MMDSOpenInoReply::ref reply;
   CInode *in = get_inode(ino);
@@ -8857,7 +8858,7 @@ void MDCache::handle_open_ino(const MMDSOpenIno::const_ref &m, int err)
       return;
     reply = MMDSOpenInoReply::create(m->get_tid(), ino, hint, ret);
   }
-  m->get_connection()->send_message2(reply); /* FIXME, why not send_client? */
+  mds->send_message_mds(reply, from);
 }
 
 void MDCache::handle_open_ino_reply(const MMDSOpenInoReply::const_ref &m)
@@ -9046,7 +9047,7 @@ void MDCache::handle_find_ino(const MMDSFindIno::const_ref &m)
     in->make_path(r->path);
     dout(10) << " have " << r->path << " " << *in << dendl;
   }
-  m->get_connection()->send_message2(r);
+  mds->send_message_mds(r, mds_rank_t(m->get_source().num()));
 }
 
 
index 00ba9e44d198b149f99f70791dffd893f7480fe5..a365ed8223a874bba6b36375a3b4d3b82fe83a35 100644 (file)
@@ -966,8 +966,9 @@ void MDSRank::forward_message_mds(const MClientRequest::const_ref& m, mds_rank_t
   bool client_must_resend = true;  //!creq->can_forward();
 
   // tell the client where it should go
+  auto session = get_session(m);
   auto f = MClientRequestForward::create(m->get_tid(), mds, m->get_num_fwd()+1, client_must_resend);
-  messenger->send_message(f.detach(), m->get_source_inst());
+  send_message_client(f, session);
 }
 
 void MDSRank::send_message_client_counted(const Message::ref& m, client_t client)
index ae49000e57fe68174d32d91b4386817542ce70b6..bd071baa773aab3b5fb4d4d41e2cf5403bf07db2 100644 (file)
@@ -431,15 +431,15 @@ void Server::handle_client_session(const MClientSession::const_ref &m)
     break;
 
   case CEPH_SESSION_REQUEST_RENEWCAPS:
-    if (session->is_open() ||
-       session->is_stale()) {
+    if (session->is_open() || session->is_stale()) {
       mds->sessionmap.touch_session(session);
       if (session->is_stale()) {
        mds->sessionmap.set_state(session, Session::STATE_OPEN);
        mds->locker->resume_stale_caps(session);
        mds->sessionmap.touch_session(session);
       }
-      m->get_connection()->send_message2(MClientSession::create(CEPH_SESSION_RENEWCAPS, m->get_seq()));
+      auto reply = MClientSession::create(CEPH_SESSION_RENEWCAPS, m->get_seq());
+      mds->send_message_client(reply, session);
     } else {
       dout(10) << "ignoring renewcaps on non open|stale session (" << session->get_state_name() << ")" << dendl;
     }
@@ -543,9 +543,11 @@ void Server::_session_logged(Session *session, uint64_t state_seq, bool open, ve
     auto reply = MClientSession::create(CEPH_SESSION_OPEN);
     if (session->info.has_feature(CEPHFS_FEATURE_MIMIC))
       reply->supported_features = supported_features;
-    session->get_connection()->send_message2(reply);
-    if (mdcache->is_readonly())
-      session->get_connection()->send_message2(MClientSession::create(CEPH_SESSION_FORCE_RO));
+    mds->send_message_client(reply, session);
+    if (mdcache->is_readonly()) {
+      auto m = MClientSession::create(CEPH_SESSION_FORCE_RO);
+      mds->send_message_client(m, session);
+    }
   } else if (session->is_closing() ||
             session->is_killing()) {
     // kill any lingering capabilities, leases, requests
@@ -1017,7 +1019,8 @@ void Server::handle_client_reconnect(const MClientReconnect::const_ref &m)
   }
 
   if (deny) {
-    m->get_connection()->send_message2(MClientSession::create(CEPH_SESSION_CLOSE));
+    auto m = MClientSession::create(CEPH_SESSION_CLOSE);
+    mds->send_message_client(m, session);
     if (session->is_open())
       kill_session(session, nullptr);
     return;
@@ -1034,7 +1037,7 @@ void Server::handle_client_reconnect(const MClientReconnect::const_ref &m)
   auto reply = MClientSession::create(CEPH_SESSION_OPEN);
   if (session->info.has_feature(CEPHFS_FEATURE_MIMIC))
     reply->supported_features = supported_features;
-  m->get_connection()->send_message2(reply);
+  mds->send_message_client(reply, session);
 
   session->last_cap_renew = clock::now();
   mds->clog->debug() << "reconnect by " << session->info.inst << " after " << delay;
@@ -1536,7 +1539,7 @@ void Server::early_reply(MDRequestRef& mdr, CInode *tracei, CDentry *tracedn)
   }
 
   reply->set_extra_bl(mdr->reply_extra_bl);
-  req->get_connection()->send_message2(reply);
+  mds->send_message_client(reply, mdr->session);
 
   mdr->did_early_reply = true;
 
@@ -1639,7 +1642,7 @@ void Server::reply_client_request(MDRequestRef& mdr, const MClientReply::ref &re
     reply->set_extra_bl(mdr->reply_extra_bl);
 
     reply->set_mdsmap_epoch(mds->mdsmap->get_epoch());
-    req->get_connection()->send_message2(reply);
+    mds->send_message_client(reply, session);
   }
 
   if (req->is_queued_for_replay() &&
@@ -1809,7 +1812,7 @@ void Server::handle_client_request(const MClientRequest::const_ref &req)
          encode(created, extra);
          reply->set_extra_bl(extra);
        }
-       req->get_connection()->send_message2(reply);
+        mds->send_message_client(reply, session);
 
        if (req->is_queued_for_replay())
          mds->queue_one_replay();