ML<I>::execute_next_action();
}
+template <typename I>
+Context *ExclusiveLock<I>::start_op() {
+ assert(m_image_ctx.owner_lock.is_locked());
+ Mutex::Locker locker(ML<I>::m_lock);
+
+ if (!accept_ops(ML<I>::m_lock)) {
+ return nullptr;
+ }
+
+ m_async_op_tracker.start_op();
+ return new FunctionContext([this](int r) {
+ m_async_op_tracker.finish_op();
+ });
+}
+
template <typename I>
void ExclusiveLock<I>::handle_init_complete(uint64_t features) {
- ldout(m_image_ctx.cct, 10) << "features=" << features << dendl;
+ ldout(m_image_ctx.cct, 10) << ": features=" << features << dendl;
if ((features & RBD_FEATURE_JOURNALING) != 0) {
m_image_ctx.io_work_queue->set_require_lock_on_read();