]> git.apps.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)
committerSage Weil <sage@inktank.com>
Mon, 30 Dec 2013 16:49:21 +0000 (08:49 -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>
(cherry picked from commit c5c399d327cfc0d232d9ec7d49ababa914d0b21a)

src/osdc/Objecter.cc

index 60f17383c80e6a73de4c57f64ff696eed5bae6f4..ab1d415cb63e9fda9640cc23bb7a1456034ee947 100644 (file)
@@ -1003,7 +1003,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_op(op);
     }