]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
auth: mount is working again
authorYehuda Sadeh <yehuda@hq.newdream.net>
Tue, 25 Aug 2009 22:06:11 +0000 (15:06 -0700)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Tue, 25 Aug 2009 22:06:11 +0000 (15:06 -0700)
src/messages/MClientMountAck.h
src/mon/MonClient.cc
src/mon/MonClient.h

index fb5b7f0eaa66c81709cb7093b12696bba391e596..66b9345f42d80c63ce6c7f43935f11e1a1a52501 100644 (file)
@@ -21,7 +21,6 @@ struct MClientMountAck : public Message {
   __s32 result;
   cstring result_msg;
   bufferlist monmap_bl;
-  bufferlist signed_ticket;
 
   MClientMountAck(int r = 0, const char *msg = 0) :
     Message(CEPH_MSG_CLIENT_MOUNT_ACK),
@@ -33,7 +32,6 @@ struct MClientMountAck : public Message {
     o << "client_mount_ack(" << result;
     if (result_msg.length()) o << " " << result_msg;
     if (monmap_bl.length()) o << " + monmap";
-    if (signed_ticket.length()) o << " + ticket";
     o << ")";
   }
 
@@ -42,13 +40,11 @@ struct MClientMountAck : public Message {
     ::decode(result, p);
     ::decode(result_msg, p);
     ::decode(monmap_bl, p);
-    ::decode(signed_ticket, p);
   }
   void encode_payload() {
     ::encode(result, payload);
     ::encode(result_msg, payload);
     ::encode(monmap_bl, payload);
-    ::encode(signed_ticket, payload);
   }
 };
 
index 30b7563d1ac2e904ec21db53956c44f7919e19be..7b096c573906d30aade21f4f67f1ea16c1df5ea7 100644 (file)
@@ -164,11 +164,11 @@ bool MonClient::dispatch_impl(Message *m)
 
   case CEPH_MSG_CLIENT_MOUNT_ACK:
     op_handler = &mount_handler;
-    return true;
+    break;
 
   case CEPH_MSG_CLIENT_UNMOUNT:
     op_handler = &unmount_handler;
-    return true;
+    break;
   default:
     return false;
   }
@@ -177,7 +177,7 @@ bool MonClient::dispatch_impl(Message *m)
 
   delete m;
 
-  return false;
+  return true;
 }
 
 void MonClient::handle_monmap(MMonMap *m)
@@ -193,7 +193,11 @@ void MonClient::handle_monmap(MMonMap *m)
 
 int MonClient::mount(double mount_timeout)
 {
-  return mount_handler.do_op(mount_timeout);
+  int ret = mount_handler.do_op(mount_timeout);
+
+  dout(0) << "mount ret=" << ret << dendl;
+
+  return ret;
 }
 
 int MonClient::unmount(double timeout)
@@ -253,11 +257,12 @@ int MonClient::MonClientOpHandler::do_op(double timeout)
   num_waiters++;
 
   while (!got_response() ||
-        (!itsme && !done)) // non-doers wait a little longer
+        (!itsme && !done)) // non-doers wait a little longer
        cond.Wait(op_lock);
+  }
 
   if (!itsme) {
-    dout(5) << "additional get_tgt returning" << dendl;
+    dout(5) << "additional returning" << dendl;
     assert(got_response());
     return 0;
   }
@@ -266,6 +271,8 @@ int MonClient::MonClientOpHandler::do_op(double timeout)
   timer.cancel_event(timeout_event);
   timeout_event = 0;
 
+  done = true;
+
   cond.SignalAll(); // wake up non-doers
 
   return 0;
@@ -294,11 +301,10 @@ void MonClient::MonClientMountHandler::handle_response(Message *response)
   bufferlist::iterator p = m->monmap_bl.begin();
   ::decode(client->monmap, p);
 
-  // ticket
-  client->signed_ticket = m->signed_ticket;
-
   client->messenger->reset_myname(m->get_dest());
 
+  response_flag = true;
+
   cond.Signal();
 }
 
@@ -317,6 +323,8 @@ void MonClient::MonClientUnmountHandler::handle_response(Message *response)
   cond.Signal();
 }
 
+// -------------------
+// GET TGT
 Message *MonClient::MonClientGetTGTHandler::build_request()
 {
   MAuth *msg = new MAuth;
index 82f36572249010b1e53c8aaa5ce8b011b19fab12..b89faa8fcf922d24525c5892bd70ded0971e0d4c 100644 (file)
@@ -34,11 +34,8 @@ private:
   Messenger *messenger;
 
   bufferlist signed_ticket;
-
   bufferlist tgt;
 
-  Context *mount_timeout_event;
-
   Mutex monc_lock;
   bool mounted;
   int mounters;
@@ -75,6 +72,7 @@ private:
                timer(op_lock) {
       done = false;
       num_waiters = 0;
+      timeout_event = NULL;
     }
 
     void _op_timeout(double timeout);
@@ -102,13 +100,14 @@ private:
   };
 
   class MonClientMountHandler : public MonClientOpHandler {
+    bool response_flag;
   public:
-    MonClientMountHandler(MonClient *c) : MonClientOpHandler(c) {}
+    MonClientMountHandler(MonClient *c) : MonClientOpHandler(c) { response_flag = false; }
     ~MonClientMountHandler() {}
 
     Message *build_request();
     void handle_response(Message *response);
-    bool got_response() { return client->signed_ticket.length() != 0; }
+    bool got_response() { return response_flag; }
   };
 
   class MonClientUnmountHandler : public MonClientOpHandler {
@@ -149,7 +148,6 @@ private:
                 unmount_handler(this) {
     mounted = false;
     mounters = 0;
-    mount_timeout_event = 0;
     unmounting = false;
   }