From 179001b42c142e0877e6c4991f88e7355c9b82ff Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 26 Sep 2013 10:38:23 -0700 Subject: [PATCH] osd/ReplicatedPG: fix bl resize on write vs truncate race If we resize the write due to the funky truncate behavior, we need to resize the bufferlist to match. Fixes: #6346 Signed-off-by: Sage Weil --- src/osd/ReplicatedPG.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 9b4d069370ba..e949c7a9b7f8 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -2645,6 +2645,9 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) op.extent.length = (op.extent.offset > oi.size ? 0 : oi.size - op.extent.offset); dout(10) << " old truncate_seq " << op.extent.truncate_seq << " < current " << seq << ", adjusting write length to " << op.extent.length << dendl; + bufferlist t; + t.substr_of(osd_op.indata, 0, op.extent.length); + osd_op.indata.swap(t); } if (op.extent.truncate_seq > seq) { // write arrives before trimtrunc -- 2.47.3