From: Yehuda Sadeh Date: Thu, 5 Dec 2013 07:33:42 +0000 (-0800) Subject: librados: lockless get_instance_id() X-Git-Tag: v0.75~38^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e7bf5b2970dbb160f5725bccee5a51ff64ccbee5;p=ceph.git librados: lockless get_instance_id() Signed-off-by: Yehuda Sadeh --- 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);