From: xie xingguo Date: Sat, 4 Jun 2016 02:58:31 +0000 (+0800) Subject: bluestore/BitAllocator: fix stats of concurrent scans X-Git-Tag: v11.0.0~285^2~10 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=47cddb6a346e84cf11b6bd1033248f98db6f4889;p=ceph.git bluestore/BitAllocator: fix stats of concurrent scans Signed-off-by: xie xingguo --- diff --git a/src/os/bluestore/BitAllocator.cc b/src/os/bluestore/BitAllocator.cc index 4895dba5bf9..d15f698d17e 100644 --- a/src/os/bluestore/BitAllocator.cc +++ b/src/os/bluestore/BitAllocator.cc @@ -1393,14 +1393,15 @@ int64_t BitAllocator::alloc_blocks_res(int64_t num_blocks, int64_t *start_block) lock_shared(); serial_lock(); - while (scans && !allocated) { - allocated = alloc_blocks_int(false, true, num_blocks, start_block); - scans --; - } if (is_stats_on()) { m_stats->add_concurrent_scans(scans); } + while (scans && !allocated) { + allocated = alloc_blocks_int(false, true, num_blocks, start_block); + scans--; + } + if (!allocated) { /* * Could not find anything in two scans. @@ -1447,13 +1448,14 @@ int64_t BitAllocator::alloc_blocks(int64_t num_blocks, int64_t *start_block) m_stats->add_allocated(num_blocks); } + if (is_stats_on()) { + m_stats->add_concurrent_scans(scans); + } + while (scans && !allocated) { allocated = alloc_blocks_int(false, true, num_blocks, start_block); scans--; } - if (is_stats_on()) { - m_stats->add_concurrent_scans(scans); - } if (!allocated) { /* @@ -1547,13 +1549,13 @@ int64_t BitAllocator::alloc_blocks_dis(int64_t num_blocks, int64_t *block_list) goto exit; } + if (is_stats_on()) { + m_stats->add_concurrent_scans(scans); + } while (scans && allocated < num_blocks) { allocated += alloc_blocks_dis_int(false, num_blocks, blk_off, &block_list[allocated]); - scans --; - } - if (is_stats_on()) { - m_stats->add_concurrent_scans(scans); + scans--; } if (allocated < num_blocks) {