From 8871c5c688705171be8fca54727460895602a901 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Wed, 18 Sep 2019 09:52:17 -0400 Subject: [PATCH] osd/PrimaryLogPG: do not append outdata to TMAPUP ops Write operations should not have data but TMAPUP incorrectly appends the previously read TMAP object to the outdata buferlist. Fixes: https://tracker.ceph.com/issues/41908 Signed-off-by: Jason Dillaman --- src/osd/PrimaryLogPG.cc | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index eb06312d0a7..f9abc6967fc 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -4615,7 +4615,6 @@ int PrimaryLogPG::do_tmapup_slow(OpContext *ctx, bufferlist::const_iterator& bp, newop.op.extent.length = obl.length(); newop.indata = obl; do_osd_ops(ctx, nops); - osd_op.outdata.claim(newop.outdata); return 0; } @@ -4695,7 +4694,7 @@ int PrimaryLogPG::do_tmapup(OpContext *ctx, bufferlist::const_iterator& bp, OSDO last_in_key = key; dout(10) << "tmapup op " << (int)op << " key " << key << dendl; - + // skip existing intervening keys bool key_exists = false; while (have_next && !key_exists) { @@ -4803,7 +4802,6 @@ int PrimaryLogPG::do_tmapup(OpContext *ctx, bufferlist::const_iterator& bp, OSDO newop.op.extent.length = obl.length(); newop.indata = obl; do_osd_ops(ctx, nops); - osd_op.outdata.claim(newop.outdata); } } return result; -- 2.47.3