From d34958ce49a643ebb074a025e09c2027e6693519 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Tue, 25 Aug 2009 15:06:11 -0700 Subject: [PATCH] auth: mount is working again --- src/messages/MClientMountAck.h | 4 ---- src/mon/MonClient.cc | 26 +++++++++++++++++--------- src/mon/MonClient.h | 10 ++++------ 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/messages/MClientMountAck.h b/src/messages/MClientMountAck.h index fb5b7f0eaa66c..66b9345f42d80 100644 --- a/src/messages/MClientMountAck.h +++ b/src/messages/MClientMountAck.h @@ -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); } }; diff --git a/src/mon/MonClient.cc b/src/mon/MonClient.cc index 30b7563d1ac2e..7b096c573906d 100644 --- a/src/mon/MonClient.cc +++ b/src/mon/MonClient.cc @@ -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; diff --git a/src/mon/MonClient.h b/src/mon/MonClient.h index 82f3657224901..b89faa8fcf922 100644 --- a/src/mon/MonClient.h +++ b/src/mon/MonClient.h @@ -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; } -- 2.39.5