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:
Igor Fedotov 2018-05-12 00:26:49 +03:00
parent 0c69672fce
commit 1b6a56e800
2 changed files with 20 additions and 2 deletions

View File

@ -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()

View File

@ -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;