From: Josh Durgin Date: Mon, 21 Sep 2015 22:46:42 +0000 (-0700) Subject: use simplifed messenger constructor for clients X-Git-Tag: v0.80.11~13^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c85d06384e795ab2717868ce45f01ae93181a6be;p=ceph.git use simplifed messenger constructor for clients This is all mechanical except the calculation of the nonce, which is now always randomized for clients. Fixes: #13032 Signed-off-by: Josh Durgin (cherry picked from commit a3a8c85b79afef67681c32c57b591c0e0a87a349) Conflicts: src/ceph_fuse.cc src/ceph_syn.cc src/libcephfs.cc src/librados/RadosClient.cc src/mds/MDSUtility.cc src/mon/MonClient.cc src/test/mon/test_mon_workloadgen.cc - different arguments to Messenger::create() in firefly --- diff --git a/src/ceph_fuse.cc b/src/ceph_fuse.cc index 54616f60f99..cc97938a9aa 100644 --- a/src/ceph_fuse.cc +++ b/src/ceph_fuse.cc @@ -120,9 +120,7 @@ int main(int argc, const char **argv, const char *envp[]) { goto out_mc_start_failed; // start up network - messenger = Messenger::create(g_ceph_context, - entity_name_t::CLIENT(), "client", - getpid()); + messenger = Messenger::create_client_messenger(g_ceph_context, "client"); messenger->set_default_policy(Messenger::Policy::lossy_client(0, 0)); messenger->set_policy(entity_name_t::TYPE_MDS, Messenger::Policy::lossless_client(0, 0)); diff --git a/src/ceph_syn.cc b/src/ceph_syn.cc index c3410aa61d4..1d10fa2e62c 100644 --- a/src/ceph_syn.cc +++ b/src/ceph_syn.cc @@ -65,9 +65,8 @@ int main(int argc, const char **argv, char *envp[]) cout << "ceph-syn: starting " << g_conf->num_client << " syn client(s)" << std::endl; for (int i=0; inum_client; i++) { - messengers[i] = Messenger::create(g_ceph_context, - entity_name_t(entity_name_t::TYPE_CLIENT,-1), "synclient", - i * 1000000 + getpid()); + messengers[i] = Messenger::create_client_messenger(g_ceph_context, + "synclient"); messengers[i]->bind(g_conf->public_addr); mclients[i] = new MonClient(g_ceph_context); mclients[i]->build_initial_monmap(); diff --git a/src/libcephfs.cc b/src/libcephfs.cc index 88e86ba8347..a8a32f48ee8 100644 --- a/src/libcephfs.cc +++ b/src/libcephfs.cc @@ -34,9 +34,8 @@ struct ceph_mount_info { public: - ceph_mount_info(uint64_t msgr_nonce_, CephContext *cct_) - : msgr_nonce(msgr_nonce_), - mounted(false), + ceph_mount_info(CephContext *cct_) + : mounted(false), inited(false), client(NULL), monclient(NULL), @@ -80,7 +79,7 @@ public: goto fail; //network connection - messenger = Messenger::create(cct, entity_name_t::CLIENT(), "client", msgr_nonce); + messenger = Messenger::create_client_messenger(cct, "client"); //at last the client ret = -1002; @@ -215,7 +214,6 @@ public: } private: - uint64_t msgr_nonce; bool mounted; bool inited; Client *client; @@ -242,14 +240,7 @@ extern "C" const char *ceph_version(int *pmajor, int *pminor, int *ppatch) extern "C" int ceph_create_with_context(struct ceph_mount_info **cmount, CephContext *cct) { - uint64_t nonce = 0; - - // 6 bytes of random and 2 bytes of pid - get_random_bytes((char*)&nonce, sizeof(nonce)); - nonce &= ~0xffff; - nonce |= (uint64_t)getpid(); - - *cmount = new struct ceph_mount_info(nonce, cct); + *cmount = new struct ceph_mount_info(cct); return 0; } diff --git a/src/librados/RadosClient.cc b/src/librados/RadosClient.cc index 74dda533e47..572aa2528d5 100644 --- a/src/librados/RadosClient.cc +++ b/src/librados/RadosClient.cc @@ -52,8 +52,6 @@ #undef dout_prefix #define dout_prefix *_dout << "librados: " -static atomic_t rados_instance; - bool librados::RadosClient::ms_get_authorizer(int dest_type, AuthAuthorizer **authorizer, bool force_new) { @@ -206,7 +204,6 @@ int librados::RadosClient::connect() common_init_finish(cct); int err; - uint64_t nonce; // already connected? if (state == CONNECTING) @@ -221,9 +218,7 @@ int librados::RadosClient::connect() goto out; err = -ENOMEM; - nonce = getpid() + (1000000 * (uint64_t)rados_instance.inc()); - messenger = Messenger::create(cct, entity_name_t::CLIENT(-1), - "radosclient", nonce); + messenger = Messenger::create_client_messenger(cct, "radosclient"); if (!messenger) goto out; diff --git a/src/mds/MDSUtility.cc b/src/mds/MDSUtility.cc index 09be280f360..65cf5c61dfa 100644 --- a/src/mds/MDSUtility.cc +++ b/src/mds/MDSUtility.cc @@ -25,7 +25,7 @@ MDSUtility::MDSUtility() : waiting_for_mds_map(NULL) { monc = new MonClient(g_ceph_context); - messenger = Messenger::create(g_ceph_context, entity_name_t::CLIENT(), "mds", getpid()); + messenger = Messenger::create_client_messenger(g_ceph_context, "mds"); mdsmap = new MDSMap(); osdmap = new OSDMap(); objecter = new Objecter(g_ceph_context, messenger, monc, osdmap, lock, timer, 0, 0); diff --git a/src/mon/MonClient.cc b/src/mon/MonClient.cc index 1bbd4675fac..0272dfdd189 100644 --- a/src/mon/MonClient.cc +++ b/src/mon/MonClient.cc @@ -116,9 +116,7 @@ int MonClient::get_monmap_privately() bool temp_msgr = false; Messenger* smessenger = NULL; if (!messenger) { - messenger = smessenger = Messenger::create(cct, - entity_name_t::CLIENT(-1), - "temp_mon_client", getpid()); + messenger = smessenger = Messenger::create_client_messenger(cct, "temp_mon_client"); messenger->add_dispatcher_head(this); smessenger->start(); temp_msgr = true; @@ -213,9 +211,7 @@ int MonClient::ping_monitor(const string &mon_id, string *result_reply) MonClientPinger *pinger = new MonClientPinger(cct, result_reply); - Messenger *smsgr = Messenger::create(cct, - entity_name_t::CLIENT(-1), - "temp_ping_client", getpid()); + Messenger *smsgr = Messenger::create_client_messenger(cct, "temp_ping_client"); smsgr->add_dispatcher_head(pinger); smsgr->start(); diff --git a/src/test/mon/test_mon_workloadgen.cc b/src/test/mon/test_mon_workloadgen.cc index 3c6ff562743..d1659d6d016 100644 --- a/src/test/mon/test_mon_workloadgen.cc +++ b/src/test/mon/test_mon_workloadgen.cc @@ -247,8 +247,7 @@ class ClientStub : public TestStub return err; } - messenger.reset(Messenger::create(cct, entity_name_t::CLIENT(-1), - "stubclient", getpid())); + messenger.reset(Messenger::create_client_messenger(cct, "stubclient")); assert(messenger.get() != NULL); messenger->set_default_policy(