]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: do not hold osd_lock while queueing stray purged_snaps
authorSage Weil <sage@redhat.com>
Tue, 9 Jul 2019 13:12:04 +0000 (08:12 -0500)
committerSage Weil <sage@redhat.com>
Tue, 9 Jul 2019 13:12:04 +0000 (08:12 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/OSD.cc

index 3686f32a6498de2bf7287d2fd7a7a9dc381eb059..da450ab70002f6e9c904ec16634e98f2a72bfe7b 100644 (file)
@@ -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();