]> git.proxmox.com Git - ceph.git/blob - ceph/src/librbd/cache/pwl/Builder.h
import quincy beta 17.1.0
[ceph.git] / ceph / src / librbd / cache / pwl / Builder.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_CACHE_PWL_BUILDER_H
5 #define CEPH_LIBRBD_CACHE_PWL_BUILDER_H
6
7 namespace librbd {
8 namespace cache {
9 namespace pwl {
10
11 template <typename T>
12 class Builder {
13 public:
14 virtual ~Builder() {}
15 virtual std::shared_ptr<WriteLogEntry> create_write_log_entry(
16 uint64_t image_offset_bytes, uint64_t write_bytes) = 0;
17 virtual std::shared_ptr<WriteLogEntry> create_write_log_entry(
18 std::shared_ptr<SyncPointLogEntry> sync_point_entry,
19 uint64_t image_offset_bytes, uint64_t write_bytes) = 0;
20 virtual std::shared_ptr<WriteLogEntry> create_writesame_log_entry(
21 uint64_t image_offset_bytes, uint64_t write_bytes,
22 uint32_t data_length) = 0;
23 virtual std::shared_ptr<WriteLogEntry> create_writesame_log_entry(
24 std::shared_ptr<SyncPointLogEntry> sync_point_entry,
25 uint64_t image_offset_bytes, uint64_t write_bytes,
26 uint32_t data_length) = 0;
27 virtual C_WriteRequest<T> *create_write_request(
28 T &pwl, utime_t arrived, io::Extents &&image_extents,
29 bufferlist&& bl, const int fadvise_flags, ceph::mutex &lock,
30 PerfCounters *perfcounter, Context *user_req) = 0;
31 virtual C_WriteSameRequest<T> *create_writesame_request(
32 T &pwl, utime_t arrived, io::Extents &&image_extents,
33 bufferlist&& bl, const int fadvise_flags, ceph::mutex &lock,
34 PerfCounters *perfcounter, Context *user_req) = 0;
35 virtual C_WriteRequest<T> *create_comp_and_write_request(
36 T &pwl, utime_t arrived, io::Extents &&image_extents,
37 bufferlist&& cmp_bl, bufferlist&& bl, uint64_t *mismatch_offset,
38 const int fadvise_flags, ceph::mutex &lock,
39 PerfCounters *perfcounter, Context *user_req) = 0;
40 virtual std::shared_ptr<WriteLogOperation> create_write_log_operation(
41 WriteLogOperationSet &set, uint64_t image_offset_bytes,
42 uint64_t write_bytes, CephContext *cct,
43 std::shared_ptr<WriteLogEntry> write_log_entry) = 0;
44 virtual std::shared_ptr<WriteLogOperation> create_write_log_operation(
45 WriteLogOperationSet &set, uint64_t image_offset_bytes,
46 uint64_t write_bytes, uint32_t data_len, CephContext *cct,
47 std::shared_ptr<WriteLogEntry> writesame_log_entry) = 0;
48 virtual std::shared_ptr<pwl::DiscardLogOperation> create_discard_log_operation(
49 std::shared_ptr<SyncPoint> sync_point, uint64_t image_offset_bytes,
50 uint64_t write_bytes, uint32_t discard_granularity_bytes,
51 utime_t dispatch_time, PerfCounters *perfcounter, CephContext *cct) = 0;
52 virtual C_ReadRequest *create_read_request(CephContext *cct, utime_t arrived,
53 PerfCounters *perfcounter, ceph::bufferlist *bl, Context *on_finish) = 0;
54
55 };
56
57 } // namespace pwl
58 } // namespace cache
59 } // namespace librbd
60
61 #endif // CEPH_LIBRBD_CACHE_PWL_BUILDER_H