]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
bluestore: Fix _setattr() with rare memory alignments
authorAdam Kupczyk <akupczyk@ibm.com>
Wed, 18 Jun 2025 10:25:21 +0000 (10:25 +0000)
committerAdam Kupczyk <akupczyk@ibm.com>
Wed, 18 Jun 2025 10:29:30 +0000 (10:29 +0000)
Fix case bufferlist is length 0.

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

index b097c6a9680c7db3b405f754b8291668a0c7a7d8..31262c93315871a5916e1bc3efc241e6d082a0bb 100644 (file)
@@ -18051,11 +18051,15 @@ int BlueStore::_setattr(TransContext *txc,
           << " " << name << " (" << val.length() << " bytes)"
           << dendl;
   int r = 0;
-
-  if (!val.is_contiguous() || val.front().is_partial()) {
-    val.rebuild();
+  auto& b = o->onode.attrs[name.c_str()];
+  if (val.length() == 0) {
+    b = bufferptr("", 0);
+  } else {
+    if (!val.is_contiguous() || val.front().is_partial()) {
+      val.rebuild();
+    }
+    b = val.front();
   }
-  auto& b = o->onode.attrs[name.c_str()] = val.front();
   b.reassign_to_mempool(mempool::mempool_bluestore_cache_meta);
 
   txc->write_onode(o);