From: Jason Dillaman Date: Wed, 13 Jan 2016 01:35:06 +0000 (-0500) Subject: librados: hold lock while testing state variable X-Git-Tag: v10.0.3~46^2~1^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=33d477b0b0786a848fb5ef2afd217111283a0955;p=ceph.git librados: hold lock while testing state variable Signed-off-by: Jason Dillaman --- diff --git a/src/librados/RadosClient.cc b/src/librados/RadosClient.cc index 1acde03ae21e..cc8943d90983 100644 --- a/src/librados/RadosClient.cc +++ b/src/librados/RadosClient.cc @@ -409,6 +409,7 @@ bool librados::RadosClient::ms_dispatch(Message *m) { bool ret; + Mutex::Locker l(lock); if (state == DISCONNECTED) { ldout(cct, 10) << "disconnected, discarding " << *m << dendl; m->put(); @@ -435,12 +436,11 @@ void librados::RadosClient::ms_handle_remote_reset(Connection *con) bool librados::RadosClient::_dispatch(Message *m) { + assert(lock.is_locked()); switch (m->get_type()) { // OSD case CEPH_MSG_OSD_MAP: - lock.Lock(); cond.Signal(); - lock.Unlock(); m->put(); break; @@ -873,7 +873,7 @@ int librados::RadosClient::monitor_log(const string& level, rados_log_callback_t void librados::RadosClient::handle_log(MLog *m) { - Mutex::Locker l(lock); + assert(lock.is_locked()); ldout(cct, 10) << __func__ << " version " << m->version << dendl; if (log_last_version < m->version) {