From: Radoslaw Zarzynski Date: Wed, 19 Aug 2020 14:39:15 +0000 (+0200) Subject: os/bluestore: use bl::splice() instead of bl::claim_append_piecewise(). X-Git-Tag: v16.1.0~780^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=24d3ee17fb7a471308d8025a4b0231d025e1f381;p=ceph.git os/bluestore: use bl::splice() instead of bl::claim_append_piecewise(). Signed-off-by: Radoslaw Zarzynski --- diff --git a/src/os/bluestore/BlueFS.cc b/src/os/bluestore/BlueFS.cc index 44652367cfa..eea2e1ac582 100644 --- a/src/os/bluestore/BlueFS.cc +++ b/src/os/bluestore/BlueFS.cc @@ -2753,13 +2753,11 @@ ceph::bufferlist BlueFS::FileWriter::flush_buffer( { ceph::bufferlist bl; if (partial) { - bl.claim_append_piecewise(tail_block); + tail_block.splice(0, tail_block.length(), &bl); } - if (length == bl.length() + buffer.length()) { - /* in case of inital allocation and need to zero, limited flush is unacceptable */ - bl.claim_append_piecewise(buffer); - } else { - buffer.splice(0, length, &bl); + const auto remaining_len = length - bl.length(); + buffer.splice(0, remaining_len, &bl); + if (buffer.length()) { dout(20) << " leaving 0x" << std::hex << buffer.length() << std::dec << " unflushed" << dendl; }