]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
client: use helper for _close_mds_session()
authorSage Weil <sage@inktank.com>
Fri, 8 Mar 2013 21:01:56 +0000 (13:01 -0800)
committerSage Weil <sage@inktank.com>
Wed, 13 Mar 2013 23:36:56 +0000 (16:36 -0700)
Signed-off-by: Sage Weil <sage@inktank.com>
src/client/Client.cc
src/client/Client.h

index f115e10aca986dfb6ff11d4eb5e45a58036d3ad6..ab26adf6541abbac8686a495450732b6121e5650 100644 (file)
@@ -1480,6 +1480,14 @@ MetaSession *Client::_open_mds_session(int mds)
   return session;
 }
 
+void Client::_close_mds_session(MetaSession *s)
+{
+  ldout(cct, 2) << "_close_mds_session mds." << s->mds_num << " seq " << s->seq << dendl;
+  s->state = MetaSession::STATE_CLOSING;
+  messenger->send_message(new MClientSession(CEPH_SESSION_REQUEST_CLOSE, s->seq),
+                         s->inst);
+}
+
 void Client::_closed_mds_session(int mds, MetaSession *s)
 {
   mount_cond.Signal();
@@ -1505,12 +1513,10 @@ void Client::handle_client_session(MClientSession *m)
   switch (m->get_op()) {
   case CEPH_SESSION_OPEN:
     renew_caps(session);
+    session->state = MetaSession::STATE_OPEN;
     if (unmounting) {
-      session->state = MetaSession::STATE_CLOSING;
-      messenger->send_message(new MClientSession(CEPH_SESSION_REQUEST_CLOSE, session->seq),
-                              mdsmap->get_inst(from));
+      _close_mds_session(session);
     } else {
-      session->state = MetaSession::STATE_OPEN;
       connect_mds_targets(from);
     }
     break;
@@ -1961,9 +1967,10 @@ void Client::got_mds_push(int mds)
 
   s->seq++;
   ldout(cct, 10) << " mds." << mds << " seq now " << s->seq << dendl;
-  if (s->state == MetaSession::STATE_CLOSING)
+  if (s->state == MetaSession::STATE_CLOSING) {
     messenger->send_message(new MClientSession(CEPH_SESSION_REQUEST_CLOSE, s->seq),
                            s->inst);
+  }
 }
 
 void Client::handle_lease(MClientLease *m)
@@ -3732,12 +3739,8 @@ void Client::unmount()
   for (map<int,MetaSession*>::iterator p = mds_sessions.begin();
        p != mds_sessions.end();
        ++p) {
-    ldout(cct, 2) << "sending client_session close to mds." << p->first
-           << " seq " << p->second->seq << dendl;
     if (p->second->state != MetaSession::STATE_CLOSING) {
-      p->second->state = MetaSession::STATE_CLOSING;
-      messenger->send_message(new MClientSession(CEPH_SESSION_REQUEST_CLOSE, p->second->seq),
-                              mdsmap->get_inst(p->first));
+      _close_mds_session(p->second);
     }
   }
 
index 63b699c4022811a76db90b136b7dd2dad35cbb81..cbd10a28cd8e21af2ace8eff32b12f1ffe5c5bf4 100644 (file)
@@ -235,6 +235,7 @@ public:
   void got_mds_push(int mds);
   MetaSession *_get_or_open_mds_session(int mds);
   MetaSession *_open_mds_session(int mds);
+  void _close_mds_session(MetaSession *s);
   void _closed_mds_session(int mds, MetaSession *s);
   void handle_client_session(MClientSession *m);
   void send_reconnect(int mds);