From: Sage Weil Date: Tue, 9 Jul 2019 13:12:04 +0000 (-0500) Subject: osd: do not hold osd_lock while queueing stray purged_snaps X-Git-Tag: v15.1.0~2249^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9e41cecf71312b67dee4aab6c358c6fbc10973cb;p=ceph.git osd: do not hold osd_lock while queueing stray purged_snaps Signed-off-by: Sage Weil --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 3686f32a6498..da450ab70002 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -6646,10 +6646,6 @@ void OSD::scrub_purged_snaps() 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 { @@ -6681,6 +6677,10 @@ void OSD::scrub_purged_snaps() pg->queue_snap_retrim(snap); pg->unlock(); } + osd_lock.Lock(); + if (is_stopping()) { + return; + } dout(10) << __func__ << " done queueing pgs, updating superblock" << dendl; ObjectStore::Transaction t; superblock.last_purged_snaps_scrub = ceph_clock_now();