From: Sage Weil Date: Tue, 2 Jul 2019 15:51:57 +0000 (-0500) Subject: osd: drop osd_lock during scrub X-Git-Tag: v15.1.0~2308^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=b17850a6653f2f5870907ee54c72955735ffc84a;p=ceph-ci.git osd: drop osd_lock during scrub We do not want to hold osd_lock while calling apply_transaction or else we may cause a deadlock due to a completion event that needs osd_lock. Also, we don't need to hold the lock here, so don't. Signed-off-by: Sage Weil --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 86ce5101158..650adc9ca26 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -6635,7 +6635,12 @@ void OSD::scrub_purged_snaps() SnapMapper::Scrubber s(cct, store, service.meta_ch, make_snapmapper_oid()); clog->debug() << "purged_snaps scrub starts"; + osd_lock.unlock(); s.run(); + osd_lock.lock(); + if (is_stopping()) { + return; + } if (s.stray.size()) { clog->debug() << "purged_snaps scrub find " << s.stray.size() << " strays"; } else {