#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
-#define dout_prefix *_dout << "librbd::exclusive_lock::AcquireRequest: "
+#define dout_prefix *_dout << "librbd::exclusive_lock::AcquireRequest: " \
+ << this << " " << __func__ << ": "
namespace librbd {
namespace exclusive_lock {
template <typename I>
void AcquireRequest<I>::send_prepare_lock() {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
// acquire the lock if the image is not busy performing other actions
Context *ctx = create_context_callback<
template <typename I>
Context *AcquireRequest<I>::handle_prepare_lock(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
send_flush_notifies();
return nullptr;
template <typename I>
void AcquireRequest<I>::send_flush_notifies() {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
using klass = AcquireRequest<I>;
Context *ctx = create_context_callback<klass, &klass::handle_flush_notifies>(
template <typename I>
Context *AcquireRequest<I>::handle_flush_notifies(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
assert(*ret_val == 0);
send_get_locker();
template <typename I>
void AcquireRequest<I>::send_get_locker() {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
Context *ctx = create_context_callback<
AcquireRequest<I>, &AcquireRequest<I>::handle_get_locker>(this);
template <typename I>
Context *AcquireRequest<I>::handle_get_locker(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
if (*ret_val == -ENOENT) {
ldout(cct, 20) << "no lockers detected" << dendl;
template <typename I>
void AcquireRequest<I>::send_lock() {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << "cookie=" << m_cookie << dendl;
librados::ObjectWriteOperation op;
rados::cls::lock::lock(&op, RBD_LOCK_NAME, LOCK_EXCLUSIVE, m_cookie,
template <typename I>
Context *AcquireRequest<I>::handle_lock(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
if (*ret_val == 0) {
return send_refresh();
}
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
using klass = AcquireRequest<I>;
Context *ctx = create_async_context_callback(
template <typename I>
Context *AcquireRequest<I>::handle_refresh(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
if (*ret_val == -ERESTART) {
// next issued IO or op will (re)-refresh the image and shut down lock
- ldout(cct, 5) << ": exclusive lock dynamically disabled" << dendl;
+ ldout(cct, 5) << "exclusive lock dynamically disabled" << dendl;
*ret_val = 0;
} else if (*ret_val < 0) {
lderr(cct) << "failed to refresh image: " << cpp_strerror(*ret_val)
}
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
using klass = AcquireRequest<I>;
Context *ctx = create_context_callback<klass, &klass::handle_open_journal>(
template <typename I>
Context *AcquireRequest<I>::handle_open_journal(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
if (*ret_val < 0) {
lderr(cct) << "failed to open journal: " << cpp_strerror(*ret_val) << dendl;
template <typename I>
void AcquireRequest<I>::send_allocate_journal_tag() {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
RWLock::RLocker snap_locker(m_image_ctx.snap_lock);
using klass = AcquireRequest<I>;
template <typename I>
Context *AcquireRequest<I>::handle_allocate_journal_tag(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
if (*ret_val < 0) {
lderr(cct) << "failed to allocate journal tag: " << cpp_strerror(*ret_val)
template <typename I>
void AcquireRequest<I>::send_close_journal() {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
using klass = AcquireRequest<I>;
Context *ctx = create_context_callback<klass, &klass::handle_close_journal>(
template <typename I>
Context *AcquireRequest<I>::handle_close_journal(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
if (*ret_val < 0) {
lderr(cct) << "failed to close journal: " << cpp_strerror(*ret_val)
}
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
using klass = AcquireRequest<I>;
Context *ctx = create_context_callback<klass, &klass::handle_open_object_map>(
template <typename I>
Context *AcquireRequest<I>::handle_open_object_map(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
if (*ret_val < 0) {
lderr(cct) << "failed to open object map: " << cpp_strerror(*ret_val)
}
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
using klass = AcquireRequest<I>;
Context *ctx = create_context_callback<
template <typename I>
Context *AcquireRequest<I>::handle_close_object_map(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
// object map should never result in an error
assert(*ret_val == 0);
template <typename I>
void AcquireRequest<I>::send_unlock() {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
librados::ObjectWriteOperation op;
rados::cls::lock::unlock(&op, RBD_LOCK_NAME, m_cookie);
template <typename I>
Context *AcquireRequest<I>::handle_unlock(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
if (*ret_val < 0) {
lderr(cct) << "failed to unlock image: " << cpp_strerror(*ret_val) << dendl;
template <typename I>
void AcquireRequest<I>::send_break_lock() {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
Context *ctx = create_context_callback<
AcquireRequest<I>, &AcquireRequest<I>::handle_break_lock>(this);
template <typename I>
Context *AcquireRequest<I>::handle_break_lock(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
if (*ret_val == -EAGAIN) {
ldout(cct, 5) << "lock owner is still alive" << dendl;
#define dout_subsys ceph_subsys_rbd
#undef dout_prefix
-#define dout_prefix *_dout << "librbd::exclusive_lock::ReleaseRequest: "
+#define dout_prefix *_dout << "librbd::exclusive_lock::ReleaseRequest: " \
+ << this << " " << __func__ << ": "
namespace librbd {
namespace exclusive_lock {
}
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
// release the lock if the image is not busy performing other actions
Context *ctx = create_context_callback<
template <typename I>
Context *ReleaseRequest<I>::handle_prepare_lock(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
send_cancel_op_requests();
return nullptr;
template <typename I>
void ReleaseRequest<I>::send_cancel_op_requests() {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
using klass = ReleaseRequest<I>;
Context *ctx = create_context_callback<
template <typename I>
Context *ReleaseRequest<I>::handle_cancel_op_requests(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
assert(*ret_val == 0);
template <typename I>
void ReleaseRequest<I>::send_block_writes() {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
using klass = ReleaseRequest<I>;
Context *ctx = create_context_callback<
template <typename I>
Context *ReleaseRequest<I>::handle_block_writes(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
if (*ret_val == -EBLACKLISTED) {
// allow clean shut down if blacklisted
}
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": purge_on_error=" << purge_on_error << dendl;
+ ldout(cct, 10) << "purge_on_error=" << purge_on_error << dendl;
RWLock::RLocker owner_lock(m_image_ctx.owner_lock);
Context *ctx = create_async_context_callback(
template <typename I>
Context *ReleaseRequest<I>::handle_invalidate_cache(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
if (*ret_val == -EBLACKLISTED) {
lderr(cct) << "failed to invalidate cache because client is blacklisted"
template <typename I>
void ReleaseRequest<I>::send_flush_notifies() {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
using klass = ReleaseRequest<I>;
Context *ctx = create_context_callback<
template <typename I>
Context *ReleaseRequest<I>::handle_flush_notifies(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
assert(*ret_val == 0);
send_close_journal();
}
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
using klass = ReleaseRequest<I>;
Context *ctx = create_context_callback<klass, &klass::handle_close_journal>(
template <typename I>
Context *ReleaseRequest<I>::handle_close_journal(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
if (*ret_val < 0) {
// error implies some journal events were not flushed -- continue
}
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << dendl;
using klass = ReleaseRequest<I>;
Context *ctx = create_context_callback<
template <typename I>
Context *ReleaseRequest<I>::handle_close_object_map(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
// object map shouldn't return errors
assert(*ret_val == 0);
template <typename I>
void ReleaseRequest<I>::send_unlock() {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << dendl;
+ ldout(cct, 10) << "cookie=" << m_cookie << dendl;
if (m_on_releasing != nullptr) {
// alert caller that we no longer own the exclusive lock
template <typename I>
Context *ReleaseRequest<I>::handle_unlock(int *ret_val) {
CephContext *cct = m_image_ctx.cct;
- ldout(cct, 10) << __func__ << ": r=" << *ret_val << dendl;
+ ldout(cct, 10) << "r=" << *ret_val << dendl;
if (*ret_val < 0 && *ret_val != -ENOENT) {
lderr(cct) << "failed to unlock: " << cpp_strerror(*ret_val) << dendl;