From: Adam Kupczyk Date: Tue, 15 Apr 2025 08:37:25 +0000 (+0000) Subject: os/bluestore: Fix dirty_range in BlueStore::_do_remove X-Git-Tag: testing/wip-jcollin-testing-20260217.025616-squid~16^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d901772ec0600a55bf8058d2fd78f78ef896ba67;p=ceph-ci.git os/bluestore: Fix dirty_range in BlueStore::_do_remove dirty_range used to have length = 1 byte. This is good if whole extent is inside shard. But this has proven not to be the case. dirty_range(offset, length) is slower only when it crosses shard. Partially fixes: https://tracker.ceph.com/issues/70390 Signed-off-by: Adam Kupczyk (cherry picked from commit 4f566eaf6c4646e513ea6747c7df17383d8716e2) (cherry picked from commit d6c61326a125f8bd278ec1c656d673e53edf47cd) (cherry picked from commit 37248077f4550c85258b98f184193101a02dae0e) --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 68c324593b0..bb88c486486 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -17682,7 +17682,7 @@ int BlueStore::_do_remove( bluestore_blob_t& blob = e.blob->dirty_blob(); blob.clear_flag(bluestore_blob_t::FLAG_SHARED); e.blob->get_dirty_shared_blob() = nullptr; - h->extent_map.dirty_range(e.logical_offset, 1); + h->extent_map.dirty_range(e.logical_offset, e.length); } } txc->write_onode(h);