]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: Don't evict after a flush if intersecting scrub range 28232/head
authorDavid Zafman <dzafman@redhat.com>
Tue, 26 Mar 2019 22:53:10 +0000 (15:53 -0700)
committerPrashant D <pdhange@redhat.com>
Thu, 23 May 2019 23:13:04 +0000 (19:13 -0400)
Fixes: http://tracker.ceph.com/issues/38840
Signed-off-by: David Zafman <dzafman@redhat.com>
(cherry picked from commit 459cbb5a6ca3b521b20f36f328f25f398d0ef1c4)

src/osd/PrimaryLogPG.cc

index 7eb43c2891384401ff9fbbf1376c126983b72712..bffe72ccaa03746e06c79818a5f521d686eb5ed7 100644 (file)
@@ -14065,6 +14065,11 @@ bool PrimaryLogPG::agent_maybe_evict(ObjectContextRef& obc, bool after_flush)
     dout(20) << __func__ << " skip (dirty) " << obc->obs.oi << dendl;
     return false;
   }
+  // This is already checked by agent_work() which passes after_flush = false
+  if (after_flush && range_intersects_scrub(soid, soid.get_head())) {
+      dout(20) << __func__ << " skip (scrubbing) " << obc->obs.oi << dendl;
+      return false;
+  }
   if (!obc->obs.oi.watchers.empty()) {
     dout(20) << __func__ << " skip (watchers) " << obc->obs.oi << dendl;
     return false;