mirror of
https://github.com/ceph/ceph
synced 2025-02-22 18:47:18 +00:00
os/bluestore: align BitMap allocator's init_rm_free/init_add_free parameters with min_alloc_size
Signed-off-by: Igor Fedotov <ifedotov@suse.com>
This commit is contained in:
parent
0c69672fce
commit
1b6a56e800
@ -53,13 +53,21 @@ void BitmapFastAllocator::init_add_free(uint64_t offset, uint64_t length)
|
||||
{
|
||||
ldout(cct, 10) << __func__ << " 0x" << std::hex << offset << "~" << length
|
||||
<< std::dec << dendl;
|
||||
_mark_free(offset, length);
|
||||
|
||||
auto mas = get_min_alloc_size();
|
||||
uint64_t offs = round_up_to(offset, mas);
|
||||
uint64_t l = p2align(offset + length - offs, mas);
|
||||
|
||||
_mark_free(offs, l);
|
||||
}
|
||||
void BitmapFastAllocator::init_rm_free(uint64_t offset, uint64_t length)
|
||||
{
|
||||
ldout(cct, 10) << __func__ << " 0x" << std::hex << offset << "~" << length
|
||||
<< std::dec << dendl;
|
||||
_mark_allocated(offset, length);
|
||||
auto mas = get_min_alloc_size();
|
||||
uint64_t offs = round_up_to(offset, mas);
|
||||
uint64_t l = p2align(offset + length - offs, mas);
|
||||
_mark_allocated(offs, l);
|
||||
}
|
||||
|
||||
void BitmapFastAllocator::shutdown()
|
||||
|
@ -103,6 +103,12 @@ protected:
|
||||
inline bool _is_slot_fully_allocated(uint64_t idx) const {
|
||||
return l1[idx] == all_slot_clear;
|
||||
}
|
||||
public:
|
||||
inline uint64_t get_min_alloc_size() const
|
||||
{
|
||||
return l0_granularity;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
template <class T>
|
||||
@ -537,6 +543,10 @@ public:
|
||||
std::lock_guard<std::mutex> l(lock);
|
||||
return available;
|
||||
}
|
||||
inline uint64_t get_min_alloc_size() const
|
||||
{
|
||||
return l1.get_min_alloc_size();
|
||||
}
|
||||
|
||||
protected:
|
||||
std::mutex lock;
|
||||
|
Loading…
Reference in New Issue
Block a user