From: Greg Farnum Date: Tue, 3 Aug 2010 22:21:42 +0000 (-0700) Subject: osd: Unlock osd_lock in _dispatch before locking handle_map_lock X-Git-Tag: v0.22~317 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=207a1bdca7b9565c2beb8095a633c5ff2e1c4ab3;p=ceph.git osd: Unlock osd_lock in _dispatch before locking handle_map_lock --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index c52a8b713f0..aaec8bc2f16 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1946,6 +1946,7 @@ void OSD::_dispatch(Message *m) Session *session = NULL; if (handle_map_lock) { //can't dispatch while map is being updated! + osd_lock.Unlock(); handle_map_lock->Lock(); if (map_in_progress) { dout(25) << "waiting for handle_osd_map to complete before dispatching" << dendl; @@ -1953,6 +1954,7 @@ void OSD::_dispatch(Message *m) map_cond.Wait(*handle_map_lock); } handle_map_lock->Unlock(); + osd_lock.Lock(); } switch (m->get_type()) {