Fix some bugs when testing opensds ansible
[stor4nfv.git] / src / ceph / src / librbd / object_map / InvalidateRequest.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3
4 #ifndef CEPH_LIBRBD_OBJECT_MAP_INVALIDATE_REQUEST_H
5 #define CEPH_LIBRBD_OBJECT_MAP_INVALIDATE_REQUEST_H
6
7 #include "include/int_types.h"
8 #include "librbd/AsyncRequest.h"
9
10 class Context;
11
12 namespace librbd {
13
14 class ImageCtx;
15
16 namespace object_map {
17
18 template <typename ImageCtxT = ImageCtx>
19 class InvalidateRequest : public AsyncRequest<ImageCtxT> {
20 public:
21   static InvalidateRequest* create(ImageCtxT &image_ctx, uint64_t snap_id,
22                                    bool force, Context *on_finish);
23
24   InvalidateRequest(ImageCtxT &image_ctx, uint64_t snap_id, bool force,
25                     Context *on_finish)
26     : AsyncRequest<ImageCtxT>(image_ctx, on_finish),
27       m_snap_id(snap_id), m_force(force) {
28   }
29
30   void send() override;
31
32 protected:
33   bool should_complete(int r) override;
34   int filter_return_code(int r) const override{
35     // never propagate an error back to the caller
36     return 0;
37   }
38
39 private:
40   uint64_t m_snap_id;
41   bool m_force;
42 };
43
44 } // namespace object_map
45 } // namespace librbd
46
47 extern template class librbd::object_map::InvalidateRequest<librbd::ImageCtx>;
48
49 #endif // CEPH_LIBRBD_OBJECT_MAP_INVALIDATE_REQUEST_H