From: Yehuda Sadeh Date: Fri, 28 Mar 2014 00:46:08 +0000 (-0700) Subject: librados: call objecter->handle_osd_map() under lock X-Git-Tag: v0.86~213^2~102 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=dc8494d9eaf82c6ea05687793fa5ececa08c451c;p=ceph.git librados: call objecter->handle_osd_map() under lock The lock is not shared with the objecter anymore so we need to call it under this lock, otherwise we're going to race with wait_for_osdmap(). Signed-off-by: Yehuda Sadeh --- diff --git a/src/librados/RadosClient.cc b/src/librados/RadosClient.cc index 10f2679b3be..6c0c2b8406d 100644 --- a/src/librados/RadosClient.cc +++ b/src/librados/RadosClient.cc @@ -384,8 +384,8 @@ bool librados::RadosClient::_dispatch(Message *m) objecter->handle_osd_op_reply(static_cast(m)); break; case CEPH_MSG_OSD_MAP: - objecter->handle_osd_map(static_cast(m)); lock.Lock(); + objecter->handle_osd_map(static_cast(m)); pool_cache_rwl.get_write(); osdmap_epoch = osdmap.get_epoch(); pool_cache_rwl.unlock();