From aac224283ae1e8adfb37bde4d04f6e0d4bf57212 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Thu, 6 Mar 2014 11:24:18 -0800 Subject: [PATCH] librados: don't hold lock in dispatch() Signed-off-by: Yehuda Sadeh --- src/librados/RadosClient.cc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/librados/RadosClient.cc b/src/librados/RadosClient.cc index 3d7f20829414f..83f5bbef01cb3 100644 --- a/src/librados/RadosClient.cc +++ b/src/librados/RadosClient.cc @@ -349,7 +349,6 @@ int librados::RadosClient::create_ioctx(const char *name, IoCtxImpl **io) bool librados::RadosClient::ms_dispatch(Message *m) { - Mutex::Locker l(lock); bool ret; if (state == DISCONNECTED) { @@ -364,20 +363,17 @@ bool librados::RadosClient::ms_dispatch(Message *m) void librados::RadosClient::ms_handle_connect(Connection *con) { - Mutex::Locker l(lock); objecter->ms_handle_connect(con); } bool librados::RadosClient::ms_handle_reset(Connection *con) { - Mutex::Locker l(lock); objecter->ms_handle_reset(con); return false; } void librados::RadosClient::ms_handle_remote_reset(Connection *con) { - Mutex::Locker l(lock); objecter->ms_handle_remote_reset(con); } @@ -391,10 +387,12 @@ bool librados::RadosClient::_dispatch(Message *m) break; case CEPH_MSG_OSD_MAP: objecter->handle_osd_map(static_cast(m)); + lock.Lock(); pool_cache_rwl.get_write(); osdmap_epoch = osdmap.get_epoch(); pool_cache_rwl.unlock(); cond.Signal(); + lock.Unlock(); break; case MSG_GETPOOLSTATSREPLY: objecter->handle_get_pool_stats_reply(static_cast(m)); @@ -693,7 +691,7 @@ public: void librados::RadosClient::watch_notify(MWatchNotify *m) { - assert(lock.is_locked()); + Mutex::Locker l(lock); map::iterator iter = watchers.find(m->cookie); if (iter != watchers.end()) { WatchContext *wc = iter->second; @@ -853,6 +851,7 @@ int librados::RadosClient::monitor_log(const string& level, rados_log_callback_t void librados::RadosClient::handle_log(MLog *m) { + Mutex::Locker l(lock); ldout(cct, 10) << __func__ << " version " << m->version << dendl; if (log_last_version < m->version) { -- 2.39.5