Context *ctx = new LambdaContext([this, ops](int r) {
assert(r == 0);
ldout(m_image_ctx.cct, 20) << "Finished root update " << dendl;
- this->m_async_update_superblock--;
- this->m_async_op_tracker.finish_op();
auto captured_ops = std::move(ops);
this->complete_op_log_entries(std::move(captured_ops), r);
if (need_finisher) {
this->enlist_op_appender();
}
+ this->m_async_update_superblock--;
+ this->m_async_op_tracker.finish_op();
});
uint64_t *new_first_free_entry = new(uint64_t);
Context *append_ctx = new LambdaContext(
for (auto &operation : ops) {
operation->log_append_comp_time = now;
}
- this->m_async_append_ops--;
- this->m_async_op_tracker.finish_op();
std::lock_guard locker(this->m_log_append_lock);
std::lock_guard locker1(m_lock);
delete new_first_free_entry;
schedule_update_root(new_root, ctx);
}
- });
+ this->m_async_append_ops--;
+ this->m_async_op_tracker.finish_op();
+ });
// Append logs and update first_free_update
append_ops(ops, append_ctx, new_first_free_entry);
this->m_alloc_failed_since_retire = false;
this->wake_up();
- m_async_update_superblock--;
- this->m_async_op_tracker.finish_op();
}
- this->dispatch_deferred_writes();
- this->process_writeback_dirty_entries();
- });
+ this->dispatch_deferred_writes();
+ this->process_writeback_dirty_entries();
+ m_async_update_superblock--;
+ this->m_async_op_tracker.finish_op();
+ });
std::lock_guard locker(m_lock);
schedule_update_root(new_root, ctx);