From 3448d852fd889bdb72f93083763eb270f8861888 Mon Sep 17 00:00:00 2001 From: Zhiqiang Wang Date: Wed, 10 Sep 2014 14:53:39 +0800 Subject: [PATCH] Cache tiering: do not allow flush/evict when there are requests pending Signed-off-by: Zhiqiang Wang --- src/osd/ReplicatedPG.cc | 5 +++++ src/osd/osd_types.h | 3 +++ 2 files changed, 8 insertions(+) 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), -- 2.47.3