From b04667e0434e6dd8b8beea990b488e13484fb6ee Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 23 Sep 2009 11:25:28 -0700 Subject: [PATCH] osd: session skeleton --- src/osd/OSD.cc | 33 +++++++++++++++++++++++++++++++++ src/osd/OSD.h | 13 ++++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 62427d6128249..7b647891db358 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -41,6 +41,7 @@ #include "messages/MGenericMessage.h" #include "messages/MPing.h" +#include "messages/MAuth.h" #include "messages/MOSDPing.h" #include "messages/MOSDFailure.h" #include "messages/MOSDOp.h" @@ -238,6 +239,7 @@ OSD::OSD(int id, Messenger *m, Messenger *hbm, MonClient *mc, const char *dev, c op_tp("OSD::op_tp", g_conf.osd_maxthreads), recovery_tp("OSD::recovery_tp", 1), disk_tp("OSD::disk_tp", 2), + session_lock("OSD::session_lock"), heartbeat_lock("OSD::heartbeat_lock"), heartbeat_stop(false), heartbeat_epoch(0), heartbeat_messenger(hbm), @@ -1548,6 +1550,10 @@ void OSD::_dispatch(Message *m) switch (m->get_type()) { + case CEPH_MSG_AUTH: + handle_auth((MAuth*)m); + break; + // -- don't need lock -- case CEPH_MSG_PING: dout(10) << "ping from " << m->get_source() << dendl; @@ -4115,3 +4121,30 @@ void OSD::init_op_flags(MOSDOp *op) } } + +void OSD::handle_auth(MAuth *m) +{ + dout(10) << "handle_auth " << *m << dendl; + Mutex::Locker l(session_lock); + + Session *s = (Session *)m->get_connection()->get_priv(); + if (!s) { + s = new Session; + m->get_connection()->set_priv(s->get()); + dout(10) << " new session " << s << dendl; + } + + /* + bufferlist::iterator p = m->auth_payload.begin(); + AuthBlob blob; + ::decode(blob, p); + + AuthTicket ticket; + decode_decrypt(blob.blob, + ::decode( + */ + + + s->put(); + delete m; +} diff --git a/src/osd/OSD.h b/src/osd/OSD.h index ed2c7b5d5173c..26c29e0089ebe 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -88,9 +88,10 @@ class ObjectStore; class OSDMap; class MLog; class MClass; +class MAuth; -class OSD : public Dispatcher { +class OSD : public Dispatcher { /** OSD **/ protected: Mutex osd_lock; // global lock @@ -176,6 +177,16 @@ private: ThreadPool recovery_tp; ThreadPool disk_tp; + // -- sessions -- +public: + struct Session : public RefCountedObject { + AuthTicket ticket; + }; + +private: + Mutex session_lock; + + void handle_auth(MAuth *m); // -- heartbeat -- -- 2.39.5