]>
git.proxmox.com Git - ceph.git/blob - ceph/src/tools/rbd_mirror/image_replayer/CloseImageRequest.cc
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 #include "CloseImageRequest.h"
5 #include "common/debug.h"
6 #include "common/errno.h"
7 #include "librbd/ImageCtx.h"
8 #include "librbd/ImageState.h"
9 #include "librbd/Utils.h"
11 #define dout_context g_ceph_context
12 #define dout_subsys ceph_subsys_rbd_mirror
14 #define dout_prefix *_dout << "rbd::mirror::image_replayer::CloseImageRequest: " \
15 << this << " " << __func__
19 namespace image_replayer
{
21 using librbd::util::create_context_callback
;
24 CloseImageRequest
<I
>::CloseImageRequest(I
**image_ctx
, Context
*on_finish
)
25 : m_image_ctx(image_ctx
), m_on_finish(on_finish
) {
29 void CloseImageRequest
<I
>::send() {
34 void CloseImageRequest
<I
>::close_image() {
37 Context
*ctx
= create_context_callback
<
38 CloseImageRequest
<I
>, &CloseImageRequest
<I
>::handle_close_image
>(this);
39 (*m_image_ctx
)->state
->close(ctx
);
43 void CloseImageRequest
<I
>::handle_close_image(int r
) {
44 dout(20) << ": r=" << r
<< dendl
;
47 derr
<< ": error encountered while closing image: " << cpp_strerror(r
)
51 *m_image_ctx
= nullptr;
53 m_on_finish
->complete(0);
57 } // namespace image_replayer
61 template class rbd::mirror::image_replayer::CloseImageRequest
<librbd::ImageCtx
>;