]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/ReplicatePG: skip flush/evict pinned objects
authorZhiqiang Wang <zhiqiang.wang@intel.com>
Wed, 11 Mar 2015 06:48:33 +0000 (14:48 +0800)
committerSage Weil <sage@redhat.com>
Tue, 20 Oct 2015 14:34:50 +0000 (10:34 -0400)
Signed-off-by: Zhiqiang Wang <zhiqiang.wang@intel.com>
src/osd/ReplicatedPG.cc

index fce23326296d636ae8abe409658fc8ad29764f9b..6e2f86378f719ca616f8feb651df95fee135ea58 100644 (file)
@@ -11576,6 +11576,11 @@ bool ReplicatedPG::agent_maybe_flush(ObjectContextRef& obc)
     osd->logger->inc(l_osd_agent_skip);
     return false;
   }
+  if (obc->obs.oi.is_cache_pinned()) {
+    dout(20) << __func__ << " skip (cache_pinned) " << obc->obs.oi << dendl;
+    osd->logger->inc(l_osd_agent_skip);
+    return false;
+  }
 
   utime_t now = ceph_clock_now(NULL);
   utime_t ob_local_mtime;
@@ -11646,6 +11651,10 @@ bool ReplicatedPG::agent_maybe_evict(ObjectContextRef& obc)
     dout(20) << __func__ << " skip (blocked) " << obc->obs.oi << dendl;
     return false;
   }
+  if (obc->obs.oi.is_cache_pinned()) {
+    dout(20) << __func__ << " skip (cache_pinned) " << obc->obs.oi << dendl;
+    return false;
+  }
 
   if (soid.snap == CEPH_NOSNAP) {
     int result = _verify_no_head_clones(soid, obc->ssc->snapset);