From: Zhiqiang Wang Date: Wed, 10 Sep 2014 06:53:39 +0000 (+0800) Subject: Cache tiering: do not allow flush/evict when there are requests pending X-Git-Tag: v0.86~42^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3448d852fd889bdb72f93083763eb270f8861888;p=ceph.git Cache tiering: do not allow flush/evict when there are requests pending Signed-off-by: Zhiqiang Wang --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 7578b6e4091..1254d09e6a6 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -11362,6 +11362,11 @@ bool ReplicatedPG::agent_work(int start_max) osd->logger->inc(l_osd_agent_skip); continue; } + if (obc->is_request_pending()) { + dout(20) << __func__ << " skip (request pending) " << obc->obs.oi << dendl; + osd->logger->inc(l_osd_agent_skip); + continue; + } // be careful flushing omap to an EC pool. if (base_pool->is_erasure() && diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index 87f3252ccef..11ac469d4c8 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -2971,6 +2971,9 @@ public: *requeue_snaptrimmer = true; } } + bool is_request_pending() { + return (rwstate.count > 0); + } ObjectContext() : ssc(NULL),