]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: Make OnodeScan use just one Blob
authorAdam Kupczyk <akupczyk@ibm.com>
Mon, 7 Jul 2025 10:16:43 +0000 (10:16 +0000)
committerAdam Kupczyk <akupczyk@ibm.com>
Mon, 8 Jun 2026 17:04:29 +0000 (17:04 +0000)
Signed-off-by: Adam Kupczyk <akupczyk@ibm.com>
src/os/bluestore/OnodeScan.cc

index 66b8a5c84e03e1e9007bde4b9496d302d9692ae5..578a3c7676e87ba662257358ad22bac5132ae074 100644 (file)
@@ -65,6 +65,7 @@ class BlueStore::Decoder_AllocationsAndStatFS : public BlueStore::ExtentMap::Ext
   volatile_statfs *per_pool_statfs = nullptr;
   bool_vector_t is_local_blob_compressed;
   bool_vector_t is_spanning_blob_compressed;
+  BlobRef blob = new Blob(nullptr);
 
   void _consume_new_blob(bool spanning, uint64_t extent_no, uint64_t sbid, BlobRef b);
 
@@ -99,9 +100,9 @@ BlueStore::BlobRef BlueStore::Decoder_AllocationsAndStatFS::decode_create_blob(
   uint64_t* sbid,
   bool include_ref_map,
   Collection* c) {
-  BlobRef b = c ? c->new_blob() : new Blob(nullptr);
-  b->decode<false>(p, struct_v, sbid, include_ref_map, c);
-  return b;
+  // reuse same blob all over
+  blob->decode<false>(p, struct_v, sbid, include_ref_map, c);
+  return blob;
 }
 
 void BlueStore::Decoder_AllocationsAndStatFS::_consume_new_blob(