From: Sage Weil Date: Wed, 11 Nov 2009 18:20:12 +0000 (-0800) Subject: osd: avoid truncate, remove ops we know will fail X-Git-Tag: v0.18~121^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=28f2765ca959d1d09643b6052fa986b3ed13132f;p=ceph.git osd: avoid truncate, remove ops we know will fail Now that we check return codes, these cause problems. --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index aabc74546b7a..30c416d1b871 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -1118,7 +1118,8 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops, { // write full object bufferlist nbl; bp.copy(op.extent.length, nbl); - t.truncate(coll_t::build_pg_coll(info.pgid), soid, 0); + if (ctx->obs->exists) + t.truncate(coll_t::build_pg_coll(info.pgid), soid, 0); t.write(coll_t::build_pg_coll(info.pgid), soid, op.extent.offset, op.extent.length, nbl); if (ssc->snapset.clones.size()) { snapid_t newest = *ssc->snapset.clones.rbegin(); @@ -1200,7 +1201,8 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops, case CEPH_OSD_OP_DELETE: { // delete - t.remove(coll_t::build_pg_coll(info.pgid), soid); // no clones, delete! + if (ctx->obs->exists) + t.remove(coll_t::build_pg_coll(info.pgid), soid); // no clones, delete! if (ssc->snapset.clones.size()) { snapid_t newest = *ssc->snapset.clones.rbegin(); add_interval_usage(ssc->snapset.clone_overlap[newest], info.stats);