From 2f441edd68945ade915b77a58d601c7e41a21afc Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Mon, 8 Oct 2018 12:14:21 +0200 Subject: [PATCH] os: Transaction::_update_op_bl doesn't copy bl::_buffers anymore. Signed-off-by: Radoslaw Zarzynski --- src/os/ObjectStore.h | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/os/ObjectStore.h b/src/os/ObjectStore.h index dc426aca2925f..9810c9630aa7b 100644 --- a/src/os/ObjectStore.h +++ b/src/os/ObjectStore.h @@ -695,15 +695,11 @@ public: bufferlist& bl, vector<__le32> &cm, vector<__le32> &om) { + for (auto& bp : bl.buffers()) { + ceph_assert(bp.length() % sizeof(Op) == 0); - ceph::bufferlist::buffers_t list = bl.buffers(); - ceph::bufferlist::buffers_t::iterator p; - - for(p = list.begin(); p != list.end(); ++p) { - ceph_assert(p->length() % sizeof(Op) == 0); - - char* raw_p = p->c_str(); - char* raw_end = raw_p + p->length(); + char* raw_p = const_cast(bp.c_str()); + char* raw_end = raw_p + bp.length(); while (raw_p < raw_end) { _update_op(reinterpret_cast(raw_p), cm, om); raw_p += sizeof(Op); -- 2.39.5