]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: Fix copying Buffers
authorAdam Kupczyk <akupczyk@ibm.com>
Mon, 16 Jan 2023 12:46:39 +0000 (12:46 +0000)
committerAdam Kupczyk <akupczyk@ibm.com>
Thu, 6 Jul 2023 15:28:50 +0000 (15:28 +0000)
Only copy Buffers that were not copied before.

Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
src/os/bluestore/BlueStore.cc

index 4945519e2fb875733e36b1faa7836245ab4b3971..3d8fa59cff2594e6e54ffc56ae40bb6e4f5b96ef 100644 (file)
@@ -2883,7 +2883,9 @@ uint32_t BlueStore::Blob::merge_blob(CephContext* cct, Blob* blob_to_dissolve)
   while(!src->bc.buffer_map.empty()) {
     auto buf = src->bc.buffer_map.extract(src->bc.buffer_map.cbegin());
     buf.mapped()->space = &dst->bc;
-    dst->bc.buffer_map.insert(std::move(buf));
+    if (dst->bc.buffer_map.count(buf.key()) == 0) {
+      dst->bc.buffer_map[buf.key()] = std::move(buf.mapped());
+    }
   }
   // move BufferSpace writing
   auto wrt_dst_it = dst->bc.writing.begin();