]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
os/bluestore:fix bluestore_volume_selection_reserved_factor usage
authorIgor Fedotov <igor.fedotov@croit.io>
Mon, 19 May 2025 19:19:45 +0000 (22:19 +0300)
committerIgor Fedotov <igor.fedotov@croit.io>
Mon, 19 May 2025 19:19:45 +0000 (22:19 +0300)
Fixes: https://tracker.ceph.com/issues/71368
Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
src/os/bluestore/BlueStore.h

index 81be461791937696c6b5a2a6b2137238e47e4143..373eefe4caaf38903e249aa05a902e13700e2a4a 100644 (file)
@@ -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<void*>(LEVEL_LOG);
   }