From: Kefu Chai Date: Wed, 2 Jun 2021 08:31:18 +0000 (+0800) Subject: os/bluestore/AvlAllocator: use cbit for counting the order of alignment X-Git-Tag: v16.2.8~302^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b4646e1a4b7f75363bc188df927cf10af1118f8a;p=ceph.git os/bluestore/AvlAllocator: use cbit for counting the order of alignment no need to calculate the alignment first, cbits() would suffice. as it counts the first set bit and the follow 0's in a number. the result is identical to the cbit(alignment of that number). Signed-off-by: Kefu Chai (cherry picked from commit 573cbb796e8ba2f433caa308925735101a8161a6) Signed-off-by: Mauricio Faria de Oliveira --- diff --git a/src/os/bluestore/AvlAllocator.cc b/src/os/bluestore/AvlAllocator.cc index 7a79a62b1d1..7e64e57742c 100644 --- a/src/os/bluestore/AvlAllocator.cc +++ b/src/os/bluestore/AvlAllocator.cc @@ -266,10 +266,7 @@ int AvlAllocator::_allocate( * not guarantee that other allocations sizes may exist in the same * region. */ - uint64_t align = size & -size; - ceph_assert(align != 0); - uint64_t* cursor = &lbas[cbits(align) - 1]; - + uint64_t* cursor = &lbas[cbits(size) - 1]; start = _pick_block_after(cursor, size, unit); dout(20) << __func__ << " first fit=" << start << " size=" << size << dendl; if (start != uint64_t(-1ULL)) {