From: Adam Kupczyk Date: Wed, 18 Jun 2025 10:25:21 +0000 (+0000) Subject: bluestore: Fix _setattr() with rare memory alignments X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=ffb256f9374c7189cf0c0692f9ef6f562d6a2155;p=ceph.git bluestore: Fix _setattr() with rare memory alignments Fix case bufferlist is length 0. Signed-off-by: Adam Kupczyk (cherry picked from commit e82bf6d0fd8bf4e461441a7e0cab87397043c754) --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index d76442e9a57c0..6ccf1201df216 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -18004,11 +18004,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);