CephContext *cct = m_image_ctx->cct;
ldout(cct, 10) << "r=" << *result << dendl;
+ std::unique_lock locker{m_lock};
+ ceph_assert(m_current_ops.empty());
+
if (*result < 0) {
lderr(cct) << "failed to get registered clients: " << cpp_strerror(*result)
<< dendl;
return m_on_finish;
}
- std::lock_guard locker{m_lock};
-
- ceph_assert(m_current_ops.empty());
-
for (auto client : m_clients) {
journal::ClientData client_data;
auto bl_it = client.data.cbegin();
} else if (!m_remove) {
return m_on_finish;
}
+ locker.unlock();
// no mirror clients to unregister
send_remove_mirror_image();
CephContext *cct = m_image_ctx->cct;
ldout(cct, 10) << "r=" << *result << dendl;
- std::lock_guard locker{m_lock};
+ std::unique_lock locker{m_lock};
ceph_assert(m_current_ops[client_id] > 0);
m_current_ops[client_id]--;
if (m_ret[client_id] < 0) {
return m_on_finish;
}
+ locker.unlock();
+
send_remove_mirror_image();
return nullptr;
}
CephContext *cct = m_image_ctx->cct;
ldout(cct, 10) << "r=" << *result << dendl;
- std::lock_guard locker{m_lock};
+ std::unique_lock locker{m_lock};
ceph_assert(m_current_ops[client_id] == 0);
m_current_ops.erase(client_id);
*result = m_error_result;
return m_on_finish;
}
+ locker.unlock();
send_get_clients();
return nullptr;