]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: use helper to send message to client; fix send to null connection
authorSage Weil <sage@newdream.net>
Tue, 8 Jun 2010 23:43:29 +0000 (16:43 -0700)
committerSage Weil <sage@newdream.net>
Tue, 8 Jun 2010 23:43:48 +0000 (16:43 -0700)
Sometimes session->connection is NULL; use session->inst in that case.

src/mds/MDS.cc
src/mds/MDS.h
src/mds/Server.cc

index 77f664746db1672d7065a3bf5757e010ad96db70..ba8e2631b67dc306620d2a4942f8e084171d44ff 100644 (file)
@@ -299,7 +299,9 @@ MDSTableServer *MDS::get_table_server(int t)
 
 
 
-void MDS::send_message(Message *m, Connection *c) { 
+void MDS::send_message(Message *m, Connection *c)
+{ 
+  assert(c);
   messenger->send_message(m, c);
 }
 
@@ -398,6 +400,16 @@ void MDS::send_message_client_counted(Message *m, Session *session)
   }
 }
 
+void MDS::send_message_client(Message *m, Session *session)
+{
+  dout(10) << "send_message_client " << session->inst << " " << *m << dendl;
+ if (session->connection) {
+    messenger->send_message(m, session->connection);
+  } else {
+    messenger->send_message(m, session->inst);
+  }
+}
+
 int MDS::init()
 {
   dout(10) << sizeof(MDSCacheObject) << "\tMDSCacheObject" << dendl;
index 364467f45db92169c5c58a91f45acf0ba1582273..3684c615f5eb06ebc6175bbd14340b7cdfb114a5 100644 (file)
@@ -335,6 +335,7 @@ class MDS : public Dispatcher {
   void send_message_client_counted(Message *m, client_t client);
   void send_message_client_counted(Message *m, Session *session);
   void send_message_client_counted(Message *m, Connection *connection);
+  void send_message_client(Message *m, Session *session);
   void send_message(Message *m, Connection *c);
 
   // start up, shutdown
index 10c94c5ba4360341ce6a53ed2bd8de4517f814fb..29d0a32ac1543302a431138a70d0fe3272818356 100644 (file)
@@ -312,7 +312,7 @@ void Server::_session_logged(Session *session, uint64_t state_seq, bool open, ve
 
     if (session->is_closing()) {
       // reset session
-      mds->messenger->send_message(new MClientSession(CEPH_SESSION_CLOSE), session->connection);
+      mds->send_message_client(new MClientSession(CEPH_SESSION_CLOSE), session);
       mds->sessionmap.set_state(session, Session::STATE_CLOSED);
       session->clear();
     } else if (session->is_killing()) {
@@ -431,8 +431,7 @@ void Server::find_idle_sessions()
     mds->sessionmap.set_state(session, Session::STATE_STALE);
     mds->locker->revoke_stale_caps(session);
     mds->locker->remove_stale_leases(session);
-    mds->messenger->send_message(new MClientSession(CEPH_SESSION_STALE, session->get_push_seq()),
-                                session->connection);
+    mds->send_message_client(new MClientSession(CEPH_SESSION_STALE, session->get_push_seq()), session);
   }
 
   // autoclose
@@ -691,7 +690,7 @@ void Server::recall_client_state(float ratio)
        newlim = max_caps_per_client;
       MClientSession *m = new MClientSession(CEPH_SESSION_RECALL_STATE);
       m->head.max_caps = newlim;
-      mds->messenger->send_message(m, session->connection);
+      mds->send_message_client(m, session);
     }
   }