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()) {