From 0f5e240e49a3a16b611fc80cf6ca06cfd8b1b303 Mon Sep 17 00:00:00 2001 From: Adam Kupczyk Date: Tue, 15 Apr 2025 08:34:38 +0000 Subject: [PATCH] os/bluestore: Fix reshard on spanning blobs Make sure that spanning blobs are not allowed to have extents crossing shard boundary. Partially fixes: https://tracker.ceph.com/issues/70390 Signed-off-by: Adam Kupczyk (cherry picked from commit ce05ade7980397cad48e8fc78bebc839c76ba327) --- src/os/bluestore/BlueStore.cc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index d9c72984538..1e917708e67 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -3998,6 +3998,11 @@ bool BlueStore::ExtentMap::encode_some( << std::dec << " hit new spanning blob " << *p << dendl; request_reshard(p->blob_start(), p->blob_end()); must_reshard = true; + } else if (p->blob->is_spanning() && p->logical_end() > end) { + dout(30) << __func__ << std::hex << offset << "~" << length + << std::dec << " extent stands out " << *p << dendl; + request_reshard(p->blob_start(), p->blob_end()); + must_reshard = true; } if (!must_reshard) { denc_varint(0, bound); // blobid -- 2.39.5