]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
objecter: don't resend paused ops
authorJosh Durgin <josh.durgin@inktank.com>
Wed, 6 Nov 2013 02:46:37 +0000 (10:46 +0800)
committerJosh Durgin <josh.durgin@inktank.com>
Wed, 6 Nov 2013 02:47:09 +0000 (10:47 +0800)
Paused ops are meant to block on the client side until a new map that
unpauses them is recieved. If we send paused writes when the FULL flag
is set, we'll get -ENOSPC from the osds, which is not what Objecter
users expect. This may cause rbd without caching to produce an I/O
error instead of waiting for the cluster to have capacity.

Fixes: #6725
Backport: dumpling
Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
src/osdc/Objecter.cc

index d2c574d982e1eed85476d25f89b15f29a261d12a..286c03dd2d6f21fb502a4af2e67870731c3a929f 100644 (file)
@@ -1001,7 +1001,8 @@ void Objecter::kick_requests(OSDSession *session)
     ++p;
     logger->inc(l_osdc_op_resend);
     if (op->should_resend) {
-      resend[op->tid] = op;
+      if (!op->paused)
+       resend[op->tid] = op;
     } else {
       cancel_linger_op(op);
     }