From 5100c5eafc7bd7f086a5fb19d2f3eed7f438b554 Mon Sep 17 00:00:00 2001 From: Jianpeng Ma Date: Thu, 5 May 2016 23:44:57 +0800 Subject: [PATCH] osdc/Objecter: If osd full, it should pause read op which w/ rwordered flag. Signed-off-by: Jianpeng Ma (cherry picked from commit 07b2a22210e26eac1b2825c30629788da05e5e12) Conflicts: src/osdc/Objecter.cc --- src/osdc/Objecter.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index 95700eb109bc30..d12418d8a91846 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -2154,8 +2154,13 @@ ceph_tid_t Objecter::_op_submit(Op *op, RWLock::Context& lc) ldout(cct, 10) << " paused read " << op << " tid " << last_tid.read() << dendl; op->target.paused = true; _maybe_request_map(); - } else if ((op->target.flags & CEPH_OSD_FLAG_WRITE) && _osdmap_full_flag()) { - ldout(cct, 0) << " FULL, paused modify " << op << " tid " << last_tid.read() << dendl; + } else if ((op->target.flags & (CEPH_OSD_FLAG_WRITE | CEPH_OSD_FLAG_RWORDERED)) && + !(op->target.flags & (CEPH_OSD_FLAG_FULL_TRY | + CEPH_OSD_FLAG_FULL_FORCE)) && + (_osdmap_full_flag() || + _osdmap_pool_full(op->target.base_oloc.pool))) { + ldout(cct, 0) << " FULL, paused modify " << op << " tid " + << op->tid << dendl; op->target.paused = true; _maybe_request_map(); } else if (!s->is_homeless()) {