From 766fba838fe144b6eeff4b565f2a3fdc2d7d9a48 Mon Sep 17 00:00:00 2001 From: Josh Durgin Date: Wed, 6 Nov 2013 10:46:37 +0800 Subject: [PATCH] objecter: don't resend paused ops 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 (cherry picked from commit c5c399d327cfc0d232d9ec7d49ababa914d0b21a) --- src/osdc/Objecter.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index d2c574d982e1e..286c03dd2d6f2 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -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); } -- 2.39.5