From e7bf5b2970dbb160f5725bccee5a51ff64ccbee5 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Wed, 4 Dec 2013 23:33:42 -0800 Subject: [PATCH] librados: lockless get_instance_id() Signed-off-by: Yehuda Sadeh --- src/librados/RadosClient.cc | 9 ++++----- src/librados/RadosClient.h | 2 ++ 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/librados/RadosClient.cc b/src/librados/RadosClient.cc index 9f63ffb60dd1..06ab0d732f51 100644 --- a/src/librados/RadosClient.cc +++ b/src/librados/RadosClient.cc @@ -72,6 +72,7 @@ librados::RadosClient::RadosClient(CephContext *cct_) state(DISCONNECTED), monclient(cct_), messenger(NULL), + instance_id(0), objecter(NULL), lock("librados::RadosClient::lock"), timer(cct, lock), @@ -227,6 +228,7 @@ int librados::RadosClient::connect() finisher.start(); state = CONNECTED; + instance_id = monclient.get_global_id(); lock.Unlock(); @@ -255,6 +257,7 @@ void librados::RadosClient::shutdown() objecter->shutdown_locked(); } state = DISCONNECTED; + instance_id = 0; timer.shutdown(); // will drop+retake lock lock.Unlock(); monclient.shutdown(); @@ -269,11 +272,7 @@ void librados::RadosClient::shutdown() uint64_t librados::RadosClient::get_instance_id() { - Mutex::Locker l(lock); - if (state == DISCONNECTED) - return 0; - uint64_t id = monclient.get_global_id(); - return id; + return instance_id; } librados::RadosClient::~RadosClient() diff --git a/src/librados/RadosClient.h b/src/librados/RadosClient.h index df72bb3405ab..87860b487d1c 100644 --- a/src/librados/RadosClient.h +++ b/src/librados/RadosClient.h @@ -50,6 +50,8 @@ private: MonClient monclient; SimpleMessenger *messenger; + uint64_t instance_id; + bool _dispatch(Message *m); bool ms_dispatch(Message *m); -- 2.47.3