]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore: add ExtentMap::maybe_reshard
authorAdam Kupczyk <akupczyk@ibm.com>
Thu, 16 Feb 2023 12:46:33 +0000 (12:46 +0000)
committerAdam Kupczyk <akupczyk@ibm.com>
Wed, 10 May 2023 11:47:46 +0000 (11:47 +0000)
maybe_reshard is created to filter out unnecessary calls to request_reshard.
The intended use is to let just request maybe_reshard, and delegate check
if the action is really necessary to the implementation detail level.

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

index 42d8338ffae90df6f223ff03593c6eb34c4ddde1..1a811050c7d9add5116296e1514072fed5808f66 100644 (file)
@@ -3615,9 +3615,7 @@ BlueStore::Extent *BlueStore::ExtentMap::set_lextent(
 
   Extent *le = new Extent(logical_offset, blob_offset, length, b);
   extent_map.insert(*le);
-  if (spans_shard(logical_offset, length)) {
-    request_reshard(logical_offset, logical_offset + length);
-  }
+  maybe_reshard(logical_offset, logical_offset + length);
   return le;
 }
 
index 4ee5f174e972b6126d48467554cde7fae420b148..ef8e380dbb367ac94e6b42ffe6f0eb77c4b37439 100644 (file)
@@ -898,6 +898,14 @@ public:
        needs_reshard_end = end;
       }
     }
+    // signals that there was a modification on range <begin, end)
+    // if this spans over a shard boundary, then shards no longer
+    // can be encoded separately, and reshard run is needed
+    void maybe_reshard(uint32_t begin, uint32_t end) {
+      if (spans_shard(begin, end - begin)) {
+       request_reshard(begin, end);
+      }
+    }
 
     struct DeleteDisposer {
       void operator()(Extent *e) { delete e; }