]>
git.proxmox.com Git - ceph.git/blob - ceph/src/librbd/object_map/UpdateRequest.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 #ifndef CEPH_LIBRBD_OBJECT_MAP_UPDATE_REQUEST_H
5 #define CEPH_LIBRBD_OBJECT_MAP_UPDATE_REQUEST_H
7 #include "include/int_types.h"
8 #include "librbd/object_map/Request.h"
9 #include "common/bit_vector.hpp"
10 #include "common/zipkin_trace.h"
11 #include "librbd/Utils.h"
12 #include <boost/optional.hpp>
20 namespace object_map
{
22 template <typename ImageCtxT
= librbd::ImageCtx
>
23 class UpdateRequest
: public Request
{
25 static UpdateRequest
*create(ImageCtx
&image_ctx
,
26 ceph::BitVector
<2> *object_map
,
27 uint64_t snap_id
, uint64_t start_object_no
,
28 uint64_t end_object_no
, uint8_t new_state
,
29 const boost::optional
<uint8_t> ¤t_state
,
30 const ZTracer::Trace
&parent_trace
,
32 return new UpdateRequest(image_ctx
, object_map
, snap_id
, start_object_no
,
33 end_object_no
, new_state
, current_state
,
34 parent_trace
, on_finish
);
37 UpdateRequest(ImageCtx
&image_ctx
, ceph::BitVector
<2> *object_map
,
38 uint64_t snap_id
, uint64_t start_object_no
,
39 uint64_t end_object_no
, uint8_t new_state
,
40 const boost::optional
<uint8_t> ¤t_state
,
41 const ZTracer::Trace
&parent_trace
, Context
*on_finish
)
42 : Request(image_ctx
, snap_id
, on_finish
), m_object_map(*object_map
),
43 m_start_object_no(start_object_no
), m_end_object_no(end_object_no
),
44 m_new_state(new_state
), m_current_state(current_state
),
45 m_trace(util::create_trace(image_ctx
, "update object map", parent_trace
))
47 m_trace
.event("start");
49 virtual ~UpdateRequest() {
50 m_trace
.event("finish");
56 void finish_request() override
;
59 ceph::BitVector
<2> &m_object_map
;
60 uint64_t m_start_object_no
;
61 uint64_t m_end_object_no
;
63 boost::optional
<uint8_t> m_current_state
;
64 ZTracer::Trace m_trace
;
67 } // namespace object_map
70 extern template class librbd::object_map::UpdateRequest
<librbd::ImageCtx
>;
72 #endif // CEPH_LIBRBD_OBJECT_MAP_UPDATE_REQUEST_H