]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
uclient: clean up mount wrt osdmap, mdsmap
authorSage Weil <sage@newdream.net>
Thu, 30 Apr 2009 22:24:43 +0000 (15:24 -0700)
committerSage Weil <sage@newdream.net>
Thu, 30 Apr 2009 22:25:08 +0000 (15:25 -0700)
src/client/Client.cc

index d62f2c97813b05bc7f4d8d810add730e0ce4f095..c6ddd0a9fd5a684019fdc28112ebefa775d1f28c 100644 (file)
@@ -120,8 +120,6 @@ Client::Client(Messenger *m, MonMap *mm) : timer(client_lock), client_lock("Clie
   last_tid = 0;
   unsafe_sync_write = 0;
 
-  mdsmap = 0;
-
   cwd = NULL;
 
   // 
@@ -136,7 +134,8 @@ Client::Client(Messenger *m, MonMap *mm) : timer(client_lock), client_lock("Clie
   messenger = m;
 
   // osd interfaces
-  osdmap = new OSDMap();     // initially blank.. see mount()
+  osdmap = new OSDMap;     // initially blank.. see mount()
+  mdsmap = new MDSMap;
   objecter = new Objecter(messenger, monmap, osdmap, client_lock);
   objecter->set_client_incarnation(0);  // client always 0, for now.
   objectcacher = new ObjectCacher(objecter, client_lock, 
@@ -267,7 +266,6 @@ void Client::init()
     client_logger = new Logger(s, &client_logtype);
   }
   client_logger_lock.Unlock();
-
 }
 
 void Client::shutdown() 
@@ -1111,17 +1109,6 @@ void Client::handle_mds_map(MMDSMap* m)
   if (m->get_source().is_mds())
     frommds = m->get_source().num();
 
-  if (mdsmap == 0) {
-    mdsmap = new MDSMap;
-
-    assert(m->get_source().is_mon());
-    whoami = m->get_dest().num();
-    messenger->reset_myname(entity_name_t::CLIENT(whoami));
-    dout(1) << "handle_mds_map i am now " << m->get_dest() << dendl;
-    
-    mount_cond.Signal();  // mount might be waiting for this.
-  } 
-
   if (m->get_epoch() < mdsmap->get_epoch()) {
     dout(1) << "handle_mds_map epoch " << m->get_epoch() << " is older than our "
            << mdsmap->get_epoch() << dendl;
@@ -2299,9 +2286,6 @@ int Client::mount()
   mounters++;
   
   while (signed_ticket.length() == 0 ||
-        !mdsmap ||
-        !osdmap || 
-        osdmap->get_epoch() == 0 ||
         (!itsme && !mounted))       // non-doers wait a little longer
     mount_cond.Wait(client_lock);
   
@@ -2371,6 +2355,13 @@ void Client::handle_mount_ack(MClientMountAck* m)
 {
   dout(10) << "handle_mount_ack " << *m << dendl;
 
+  assert(m->get_source().is_mon());
+  whoami = m->get_dest().num();
+  messenger->reset_myname(entity_name_t::CLIENT(whoami));
+  dout(1) << "handle_mount_ack i am now " << m->get_dest() << dendl;
+  
+  mount_cond.Signal();  // mount might be waiting for this.
+
   signed_ticket = m->signed_ticket;
   bufferlist::iterator p = signed_ticket.begin();
   ::decode(ticket, p);
@@ -2513,10 +2504,6 @@ void Client::handle_unmount(Message* m)
   dout(1) << "handle_unmount got ack" << dendl;
 
   mounted = false;
-
-  delete mdsmap;
-  mdsmap = 0;
-
   mount_cond.Signal();
 
   delete m;
@@ -2540,7 +2527,7 @@ void Client::tick()
   
   utime_t now = g_clock.now();
 
-  if (mdsmap) {
+  if (mdsmap->get_epoch()) {
     // renew caps?
     utime_t el = now - last_cap_renew;
     if (el > mdsmap->get_session_timeout() / 3.0)