]> 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>
Fri, 27 Feb 2026 17:26:51 +0000 (20:26 +0300)
Fixes: https://tracker.ceph.com/issues/71368
Signed-off-by: Igor Fedotov <igor.fedotov@croit.io>
(cherry picked from commit 43d7864093f92977a3fd084bbfd65229244b1cc9)

src/os/bluestore/BlueFS.h

index 2c0f43d88692dd90f3d24e1843835911a9d850d4..91de60c6e465d4f4b258530570f8b660c00e5ed4 100644 (file)
@@ -1079,21 +1079,19 @@ 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);
     }
@@ -1102,7 +1100,12 @@ public:
       extra_level = 0;
     }
   }
-
+  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);
   }