]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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_IO_TYPES_H | |
5 | #define CEPH_LIBRBD_IO_TYPES_H | |
6 | ||
7 | #include "include/int_types.h" | |
9f95a23c | 8 | #include "osdc/StriperTypes.h" |
7c673cae FG |
9 | #include <map> |
10 | #include <vector> | |
11 | ||
12 | namespace librbd { | |
13 | namespace io { | |
14 | ||
11fdf7f2 TL |
15 | #define RBD_QOS_IOPS_THROTTLE 1 << 0 |
16 | #define RBD_QOS_BPS_THROTTLE 1 << 1 | |
17 | #define RBD_QOS_READ_IOPS_THROTTLE 1 << 2 | |
18 | #define RBD_QOS_WRITE_IOPS_THROTTLE 1 << 3 | |
19 | #define RBD_QOS_READ_BPS_THROTTLE 1 << 4 | |
20 | #define RBD_QOS_WRITE_BPS_THROTTLE 1 << 5 | |
21 | ||
22 | #define RBD_QOS_BPS_MASK (RBD_QOS_BPS_THROTTLE | RBD_QOS_READ_BPS_THROTTLE | RBD_QOS_WRITE_BPS_THROTTLE) | |
23 | #define RBD_QOS_IOPS_MASK (RBD_QOS_IOPS_THROTTLE | RBD_QOS_READ_IOPS_THROTTLE | RBD_QOS_WRITE_IOPS_THROTTLE) | |
24 | #define RBD_QOS_READ_MASK (RBD_QOS_READ_BPS_THROTTLE | RBD_QOS_READ_IOPS_THROTTLE) | |
25 | #define RBD_QOS_WRITE_MASK (RBD_QOS_WRITE_BPS_THROTTLE | RBD_QOS_WRITE_IOPS_THROTTLE) | |
26 | ||
27 | #define RBD_QOS_MASK (RBD_QOS_BPS_MASK | RBD_QOS_IOPS_MASK) | |
28 | ||
7c673cae FG |
29 | typedef enum { |
30 | AIO_TYPE_NONE = 0, | |
31 | AIO_TYPE_GENERIC, | |
32 | AIO_TYPE_OPEN, | |
33 | AIO_TYPE_CLOSE, | |
34 | AIO_TYPE_READ, | |
35 | AIO_TYPE_WRITE, | |
36 | AIO_TYPE_DISCARD, | |
37 | AIO_TYPE_FLUSH, | |
38 | AIO_TYPE_WRITESAME, | |
c07f9fc5 | 39 | AIO_TYPE_COMPARE_AND_WRITE, |
7c673cae FG |
40 | } aio_type_t; |
41 | ||
11fdf7f2 TL |
42 | enum FlushSource { |
43 | FLUSH_SOURCE_USER, | |
44 | FLUSH_SOURCE_INTERNAL, | |
45 | FLUSH_SOURCE_SHUTDOWN | |
46 | }; | |
47 | ||
224ce89b WB |
48 | enum Direction { |
49 | DIRECTION_READ, | |
50 | DIRECTION_WRITE, | |
51 | DIRECTION_BOTH | |
52 | }; | |
53 | ||
11fdf7f2 TL |
54 | enum DispatchResult { |
55 | DISPATCH_RESULT_INVALID, | |
56 | DISPATCH_RESULT_CONTINUE, | |
57 | DISPATCH_RESULT_COMPLETE | |
58 | }; | |
59 | ||
60 | enum ObjectDispatchLayer { | |
61 | OBJECT_DISPATCH_LAYER_NONE = 0, | |
62 | OBJECT_DISPATCH_LAYER_CACHE, | |
63 | OBJECT_DISPATCH_LAYER_JOURNAL, | |
9f95a23c TL |
64 | OBJECT_DISPATCH_LAYER_PARENT_CACHE, |
65 | OBJECT_DISPATCH_LAYER_SCHEDULER, | |
11fdf7f2 TL |
66 | OBJECT_DISPATCH_LAYER_CORE, |
67 | OBJECT_DISPATCH_LAYER_LAST | |
68 | }; | |
69 | ||
70 | enum { | |
71 | OBJECT_DISCARD_FLAG_DISABLE_CLONE_REMOVE = 1UL << 0, | |
72 | OBJECT_DISCARD_FLAG_DISABLE_OBJECT_MAP_UPDATE = 1UL << 1 | |
73 | }; | |
74 | ||
75 | enum { | |
76 | OBJECT_DISPATCH_FLAG_FLUSH = 1UL << 0, | |
77 | OBJECT_DISPATCH_FLAG_WILL_RETRY_ON_ERROR = 1UL << 1 | |
78 | }; | |
79 | ||
9f95a23c TL |
80 | using striper::LightweightBufferExtents; |
81 | using striper::LightweightObjectExtent; | |
82 | using striper::LightweightObjectExtents; | |
83 | ||
84 | typedef std::pair<uint64_t,uint64_t> Extent; | |
85 | typedef std::vector<Extent> Extents; | |
86 | ||
7c673cae FG |
87 | typedef std::map<uint64_t, uint64_t> ExtentMap; |
88 | ||
89 | } // namespace io | |
90 | } // namespace librbd | |
91 | ||
92 | #endif // CEPH_LIBRBD_IO_TYPES_H |