From: Yehuda Sadeh Date: Tue, 2 Mar 2010 18:07:39 +0000 (-0800) Subject: osd: fix TRIMTRUNC truncation size X-Git-Tag: v0.20~362 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a38802e1372decacde70385b413c89cabdfbf02c;p=ceph.git osd: fix TRIMTRUNC truncation size --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 48faa96e8819..3e076cc71034 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -1146,6 +1146,9 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops, break; case CEPH_OSD_OP_TRIMTRUNC: + op.extent.offset = op.extent.truncate_size; + // falling through + case CEPH_OSD_OP_TRUNCATE: { // truncate if (!ctx->obs->exists) { @@ -1154,15 +1157,16 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops, } if (op.extent.truncate_seq) { + assert(op.extent.offset == op.extent.truncate_size); if (op.extent.truncate_seq <= oi.truncate_seq) { dout(10) << " truncate seq " << op.extent.truncate_seq << " <= current " << oi.truncate_seq << ", no-op" << dendl; break; // old } - oi.truncate_seq = op.extent.truncate_seq; - oi.truncate_size = op.extent.truncate_size; dout(10) << " truncate seq " << op.extent.truncate_seq << " > current " << oi.truncate_seq << ", truncating" << dendl; + oi.truncate_seq = op.extent.truncate_seq; + oi.truncate_size = op.extent.truncate_size; } t.truncate(coll_t::build_pg_coll(info.pgid), soid, op.extent.offset);