From ca2e8e5a256e6135eaf0f3a1e9c69bd41b1cb9c2 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 14 Dec 2011 18:42:45 -0800 Subject: [PATCH] osd: EINVAL on mismatched locator without waiting for degraded No reason to recover before returning an error. Signed-off-by: Sage Weil --- src/osd/ReplicatedPG.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 19ad90d6fdbf6..6934b8007ea31 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -550,18 +550,18 @@ void ReplicatedPG::do_op(MOSDOp *op) wait_for_missing_object(wait_oid, op); } else if (r) { osd->reply_op_error(op, r); - } else if (is_degraded_object(sobc->obs.oi.soid)) { - wait_for_degraded_object(sobc->obs.oi.soid, op); - dout(10) << " writes for " << obc->obs.oi.soid << " now blocked by " - << sobc->obs.oi.soid << dendl; - obc->blocked_by = sobc; - sobc->blocking.insert(obc); } else if (sobc->obs.oi.oloc.key != obc->obs.oi.oloc.key && sobc->obs.oi.oloc.key != obc->obs.oi.soid.oid.name && sobc->obs.oi.soid.oid.name != obc->obs.oi.oloc.key) { dout(1) << " src_oid " << osd_op.soid << " oloc " << sobc->obs.oi.oloc << " != " << op->get_oid() << " oloc " << obc->obs.oi.oloc << dendl; osd->reply_op_error(op, -EINVAL); + } else if (is_degraded_object(sobc->obs.oi.soid)) { + wait_for_degraded_object(sobc->obs.oi.soid, op); + dout(10) << " writes for " << obc->obs.oi.soid << " now blocked by " + << sobc->obs.oi.soid << dendl; + obc->blocked_by = sobc; + sobc->blocking.insert(obc); } else { src_obc[toid] = sobc; continue; -- 2.39.5