From: Adam Kupczyk Date: Tue, 15 Apr 2025 08:34:38 +0000 (+0000) Subject: os/bluestore: Fix reshard on spanning blobs X-Git-Tag: testing/wip-jcollin-testing-20260217.025616-squid~16^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=cd15c46cd765a8f8f07c9668d169f5248722182a;p=ceph-ci.git 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) (cherry picked from commit 0f5e240e49a3a16b611fc80cf6ca06cfd8b1b303) (cherry picked from commit c081b9eae7a7082dbc86b8d50a7044bc085729c5) --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 01948bcd237..68c324593b0 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -3918,6 +3918,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