]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: Don't evict after a flush if intersecting scrub range 28205/head
authorDavid Zafman <dzafman@redhat.com>
Tue, 26 Mar 2019 22:53:10 +0000 (15:53 -0700)
committerPrashant D <pdhange@redhat.com>
Wed, 22 May 2019 00:13:03 +0000 (20: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 7a35243e0c90538c00892260bd8eabd69e49f978..63dc6423a088c0936234476ff61b85a5715bf3cd 100644 (file)
@@ -14243,6 +14243,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;