]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osdc/Objecter: send FULL_TRY and FULL_FORCE ops despite full flag 6176/head
authorSage Weil <sage@redhat.com>
Mon, 5 Oct 2015 13:15:55 +0000 (09:15 -0400)
committerSage Weil <sage@redhat.com>
Mon, 5 Oct 2015 13:17:25 +0000 (09:17 -0400)
If a request has the FULL_TRY or FULL_FORCE flag, send it despite a full
pool or cluster.

Signed-off-by: Sage Weil <sage@redhat.com>
src/osdc/Objecter.cc

index dc6f130adb067af09dc766b31815651a73830e3d..6057d59f300397b752c963417ff52ee1093d6651 100644 (file)
@@ -2161,17 +2161,23 @@ ceph_tid_t Objecter::_op_submit(Op *op, RWLock::Context& lc)
 
   if ((op->target.flags & CEPH_OSD_FLAG_WRITE) &&
       osdmap->test_flag(CEPH_OSDMAP_PAUSEWR)) {
-    ldout(cct, 10) << " paused modify " << op << " tid " << last_tid.read() << dendl;
+    ldout(cct, 10) << " paused modify " << op << " tid " << last_tid.read()
+                  << dendl;
     op->target.paused = true;
     _maybe_request_map();
   } else if ((op->target.flags & CEPH_OSD_FLAG_READ) &&
             osdmap->test_flag(CEPH_OSDMAP_PAUSERD)) {
-    ldout(cct, 10) << " paused read " << op << " tid " << last_tid.read() << dendl;
+    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() || _osdmap_pool_full(op->target.base_oloc.pool))) {
-    ldout(cct, 0) << " FULL, paused modify " << op << " tid " << last_tid.read() << dendl;
+            !(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 " << last_tid.read()
+                 << dendl;
     op->target.paused = true;
     _maybe_request_map();
   } else if (!s->is_homeless()) {