]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
client: pass session to send_reconnect and resend_unsafe_requests
authorSage Weil <sage@inktank.com>
Fri, 8 Mar 2013 21:32:51 +0000 (13:32 -0800)
committerSage Weil <sage@inktank.com>
Wed, 13 Mar 2013 23:36:57 +0000 (16:36 -0700)
Signed-off-by: Sage Weil <sage@inktank.com>
src/client/Client.cc
src/client/Client.h

index 1c640f4e9a9ce962c63ee09577b3e4da21cae10c..6b5673be6bd3537b637b310b4be6809d093339e7 100644 (file)
@@ -1838,8 +1838,11 @@ void Client::handle_mds_map(MMDSMap* m)
       continue;  // no change
     
     if (newstate == MDSMap::STATE_RECONNECT &&
-       mds_sessions.count(p->first))
-      send_reconnect(p->first);
+       mds_sessions.count(p->first)) {
+      MetaSession *session = mds_sessions[p->first];
+      session->inst = mdsmap->get_inst(p->first);
+      send_reconnect(session);
+    }
 
     if (newstate >= MDSMap::STATE_ACTIVE) {
       if (oldstate < MDSMap::STATE_ACTIVE) {
@@ -1862,14 +1865,13 @@ void Client::handle_mds_map(MMDSMap* m)
   monclient->sub_got("mdsmap", mdsmap->get_epoch());
 }
 
-void Client::send_reconnect(int mds)
+void Client::send_reconnect(MetaSession *session)
 {
+  int mds = session->mds_num;
   ldout(cct, 10) << "send_reconnect to mds." << mds << dendl;
 
   MClientReconnect *m = new MClientReconnect;
 
-  assert(mds_sessions.count(mds));
-
   // i have an open session.
   hash_set<inodeno_t> did_snaprealm;
   for (hash_map<vinodeno_t, Inode*>::iterator p = inode_map.begin();
@@ -1915,14 +1917,14 @@ void Client::send_reconnect(int mds)
   }
   
   // reset my cap seq number
-  mds_sessions[mds]->seq = 0;
+  session->seq = 0;
   
   //connect to the mds' offload targets
   connect_mds_targets(mds);
   //make sure unsafe requests get saved
-  resend_unsafe_requests(mds);
+  resend_unsafe_requests(session);
 
-  messenger->send_message(m, mdsmap->get_inst(mds));
+  messenger->send_message(m, session->inst);
 }
 
 
@@ -1944,9 +1946,8 @@ void Client::kick_requests(MetaSession *session, bool signal)
     }
 }
 
-void Client::resend_unsafe_requests(int mds_num)
+void Client::resend_unsafe_requests(MetaSession *session)
 {
-  MetaSession *session = mds_sessions[mds_num];
   for (xlist<MetaRequest*>::iterator iter = session->unsafe_requests.begin();
        !iter.end();
        ++iter)
index 6b657faeb89161d0958756153ecb2d777bcd9c65..0aee3a2d8c002bcda3cf93ceb7329e2aa6adc991 100644 (file)
@@ -238,8 +238,8 @@ public:
   void _close_mds_session(MetaSession *s);
   void _closed_mds_session(MetaSession *s);
   void handle_client_session(MClientSession *m);
-  void send_reconnect(int mds);
-  void resend_unsafe_requests(int mds);
+  void send_reconnect(MetaSession *s);
+  void resend_unsafe_requests(MetaSession *s);
 
   // mds requests
   tid_t last_tid, last_flush_seq;