From: Sage Weil Date: Mon, 27 Aug 2012 15:24:08 +0000 (-0700) Subject: objecter: fix skipped map handling X-Git-Tag: v0.52~32^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2a3b7961c021b19a035f8a6cc4fc3cc90f88f367;p=ceph.git objecter: fix skipped map handling If we skip a map, we want to translate NO_ACTION to NEED_RESEND, but leave POOL_DNE alone. Signed-off-by: Sage Weil --- diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index 781a9278304d..48c07d112d7f 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -398,12 +398,12 @@ void Objecter::scan_requests(bool skipped_map, LingerOp *op = p->second; ldout(cct, 10) << " checking linger op " << op->linger_id << dendl; int r = recalc_linger_op_target(op); - if (skipped_map) - r = RECALC_OP_TARGET_NEED_RESEND; switch (r) { case RECALC_OP_TARGET_NO_ACTION: - // do nothing - break; + // resend if skipped map; otherwise do nothing. + if (!skipped_map) + break; + // -- fall-thru -- case RECALC_OP_TARGET_NEED_RESEND: need_resend_linger.push_back(op); linger_cancel_map_check(op); @@ -421,12 +421,12 @@ void Objecter::scan_requests(bool skipped_map, Op *op = p->second; ldout(cct, 10) << " checking op " << op->tid << dendl; int r = recalc_op_target(op); - if (skipped_map) - r = RECALC_OP_TARGET_NEED_RESEND; switch (r) { case RECALC_OP_TARGET_NO_ACTION: - // do nothing - break; + // resend if skipped map; otherwise do nothing. + if (!skipped_map) + break; + // -- fall-thru -- case RECALC_OP_TARGET_NEED_RESEND: need_resend[op->tid] = op; op_cancel_map_check(op);