return LBABtree::iterate_repeat(
c,
btree.upper_bound_right(c, offset),
- false,
[&ret, offset, length](auto &pos) {
if (pos.is_end() || pos.get_key() >= (offset + length)) {
return LBABtree::iterate_repeat_ret_inner(
LOG_PREFIX(BtreeLBAManager::alloc_extent);
DEBUGT("hint: {}, length: {}", t, hint, len);
auto c = get_context(t);
- ++LBABtree::lba_tree_inner_stats.num_alloc_extents;
+ ++stats.num_alloc_extents;
return with_btree_state<state_t>(
c,
hint,
- [FNAME, c, hint, len, addr, &t](auto &btree, auto &state) {
+ [this, FNAME, c, hint, len, addr, &t](auto &btree, auto &state) {
return LBABtree::iterate_repeat(
c,
btree.upper_bound_right(c, hint),
- true,
- [&state, len, &t, hint](auto &pos) {
+ [this, &state, len, &t, hint](auto &pos) {
LOG_PREFIX(BtreeLBAManager::alloc_extent);
+ ++stats.num_alloc_extents_iter_nexts;
if (!pos.is_end()) {
DEBUGT("iterate_repeat: pos: {}~{}, state: {}~{}, hint: {}",
t,
return LBABtree::iterate_repeat(
c,
btree.upper_bound_right(c, begin),
- false,
[f=std::move(f), begin, end](auto &pos) {
if (pos.is_end() || pos.get_key() >= end) {
return LBABtree::iterate_repeat_ret_inner(
return LBABtree::iterate_repeat(
c,
btree.lower_bound(c, 0, &visitor),
- false,
[&visitor](auto &pos) {
if (pos.is_end()) {
return LBABtree::iterate_repeat_ret_inner(
register_metrics();
}
-LBABtree::lba_tree_inner_stats_t LBABtree::lba_tree_inner_stats;
void BtreeLBAManager::register_metrics()
{
+ stats = {};
namespace sm = seastar::metrics;
metrics.add_group(
"LBA",
{
sm::make_counter(
"alloc_extents",
- LBABtree::lba_tree_inner_stats.num_alloc_extents,
+ stats.num_alloc_extents,
sm::description("total number of lba alloc_extent operations")
),
sm::make_counter(
"alloc_extents_iter_nexts",
- LBABtree::lba_tree_inner_stats.num_alloc_extents_iter_nexts,
+ stats.num_alloc_extents_iter_nexts,
sm::description("total number of iterator next operations during extent allocation")
),
}
using mapped_space_visitor_t = LBAManager::scan_mapped_space_func_t;
- struct lba_tree_inner_stats_t {
- uint64_t num_alloc_extents = 0;
- uint64_t num_alloc_extents_iter_nexts = 0;
- } static lba_tree_inner_stats;
-
class iterator {
public:
iterator(const iterator &rhs) noexcept :
static base_iertr::future<> iterate_repeat(
op_context_t c,
iterator_fut &&iter_fut,
- bool need_count,
F &&f,
mapped_space_visitor_t *visitor=nullptr) {
return std::move(
iter_fut
- ).si_then([c, need_count, visitor, f=std::forward<F>(f)](auto iter) {
+ ).si_then([c, visitor, f=std::forward<F>(f)](auto iter) {
return seastar::do_with(
iter,
std::move(f),
- [c, need_count, visitor](auto &pos, auto &f) {
+ [c, visitor](auto &pos, auto &f) {
return trans_intr::repeat(
- [c, need_count, visitor, &f, &pos] {
+ [c, visitor, &f, &pos] {
return f(
pos
- ).si_then([c, need_count, visitor, &pos](auto done) {
+ ).si_then([c, visitor, &pos](auto done) {
if (done == seastar::stop_iteration::yes) {
return iterate_repeat_ret_inner(
interruptible::ready_future_marker{},
seastar::stop_iteration::yes);
} else {
ceph_assert(!pos.is_end());
- if (need_count) {
- ++LBABtree::lba_tree_inner_stats.num_alloc_extents_iter_nexts;
- }
return pos.next(
c, visitor
).si_then([&pos](auto next) {