]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
os/bluestore: Fix reshard on spanning blobs
authorAdam Kupczyk <akupczyk@ibm.com>
Tue, 15 Apr 2025 08:34:38 +0000 (08:34 +0000)
committerAdam Kupczyk <akupczyk@ibm.com>
Thu, 4 Dec 2025 19:10:40 +0000 (19:10 +0000)
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 <akupczyk@ibm.com>
(cherry picked from commit ce05ade7980397cad48e8fc78bebc839c76ba327)
(cherry picked from commit 0f5e240e49a3a16b611fc80cf6ca06cfd8b1b303)
(cherry picked from commit c081b9eae7a7082dbc86b8d50a7044bc085729c5)

src/os/bluestore/BlueStore.cc

index 01948bcd2370a3123e5fff3b742ded5a9d3611dd..68c324593b0438761ea6cb2cffbe43ac3fa7b847 100644 (file)
@@ -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