From 4fbf3891aab16347d02782f7c1c0400f9e0896af Mon Sep 17 00:00:00 2001 From: Xinze Chi Date: Wed, 4 May 2016 09:49:40 +0800 Subject: [PATCH] OSD: fix deadlock in OSD::_committed_osd_maps Fixes: http://tracker.ceph.com/issues/15701 Signed-off-by: Xinze Chi --- src/osd/OSD.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 66aebb75e6bb..172a236d216d 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -6993,9 +6993,9 @@ void OSD::_committed_osd_maps(epoch_t first, epoch_t last, MOSDMap *m) failure_pending.erase(it++); } } - osd_lock.Unlock(); - shutdown(); - osd_lock.Lock(); + // trigger shutdown in a different thread + dout(0) << __func__ << " shutdown OSD via async signal" << dendl; + queue_async_signal(SIGINT); } else if (is_preboot()) { if (m->get_source().is_mon()) -- 2.47.3