.set_default(1_G)
.set_description("minimum free space allocated to BlueFS"),
+ Option("bluestore_bluefs_max_free", Option::TYPE_SIZE, Option::LEVEL_ADVANCED)
+ .set_default(10_G)
+ .set_description("Maximum free space allocated to BlueFS"),
+
Option("bluestore_bluefs_min_ratio", Option::TYPE_FLOAT, Option::LEVEL_ADVANCED)
.set_default(.02)
.set_description("Minimum fraction of free space devoted to BlueFS"),
gift = g;
reclaim = 0;
}
- uint64_t min_free = cct->_conf.get_val<Option::size_t>("bluestore_bluefs_min_free");
+ uint64_t min_free =
+ cct->_conf.get_val<Option::size_t>("bluestore_bluefs_min_free");
if (bluefs_free < min_free &&
min_free < free_cap) {
uint64_t g = min_free - bluefs_free;
gift = g;
reclaim = 0;
}
+ uint64_t max_free =
+ cct->_conf.get_val<Option::size_t>("bluestore_bluefs_max_free");
+ if (bluefs_free > max_free) {
+ dout(10) << __func__ << " bluefs_free " << bluefs_free
+ << " > max " << max_free
+ << ", stop gifting for now" << dendl;
+ gift = 0;
+ }
ceph_assert((int64_t)gift >= 0);
ceph_assert((int64_t)reclaim >= 0);
return gift > 0 ? (int64_t)gift : -(int64_t)reclaim;