From: Igor Fedotov Date: Mon, 19 May 2025 19:19:45 +0000 (+0300) Subject: os/bluestore:fix bluestore_volume_selection_reserved_factor usage X-Git-Tag: v21.0.0~256^2~563^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=43d7864093f92977a3fd084bbfd65229244b1cc9;p=ceph.git os/bluestore:fix bluestore_volume_selection_reserved_factor usage Fixes: https://tracker.ceph.com/issues/71368 Signed-off-by: Igor Fedotov --- diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index 81be46179193..373eefe4caaf 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -4508,20 +4508,18 @@ public: level_multiplier = _level_multiplier; uint64_t prev_levels = _level0_size; uint64_t cur_level = _level_base; - uint64_t cur_threshold = prev_levels + cur_level; extra_level = 1; do { uint64_t next_level = cur_level * _level_multiplier; uint64_t next_threshold = prev_levels + cur_level + next_level; ++extra_level; if (_db_total <= next_threshold) { - cur_threshold *= reserved_factor; + uint64_t cur_threshold = prev_levels + cur_level * reserved_factor; db_avail4slow = cur_threshold < _db_total ? _db_total - cur_threshold : 0; break; } else { prev_levels += cur_level; cur_level = next_level; - cur_threshold = next_threshold; } } while (true); } else { @@ -4530,6 +4528,12 @@ public: } } + uint64_t get_available_extra() const { + return db_avail4slow; + } + uint64_t get_extra_level() const { + return extra_level; + } void* get_hint_for_log() const override { return reinterpret_cast(LEVEL_LOG); }