From 2fa41470846bcaf3fa028e9b467bf65f8c3f358e Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 7 Apr 2016 11:41:55 -0400 Subject: [PATCH] osd/ReplicatedPG: clean up temp object if copy-from fails Signed-off-by: Sage Weil --- src/osd/ReplicatedPG.cc | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 3958f8942ea5..7dff8a13ca2d 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -7330,6 +7330,16 @@ void ReplicatedPG::process_copy_chunk(hobject_t oid, ceph_tid_t tid, int r) copy_ops.erase(cobc->obs.oi.soid); cobc->stop_block(); + if (r < 0 && cop->results.started_temp_obj) { + dout(10) << __func__ << " deleting partial temp object " + << cop->results.temp_oid << dendl; + ObjectContextRef tempobc = get_object_context(cop->results.temp_oid, true); + OpContextUPtr ctx = simple_opc_create(tempobc); + ctx->op_t->remove(cop->results.temp_oid); + ctx->discard_temp_oid = cop->results.temp_oid; + simple_opc_submit(std::move(ctx)); + } + // cancel and requeue proxy ops on this object if (!r) { for (map::iterator it = proxyread_ops.begin(); -- 2.47.3