]> git.proxmox.com Git - ceph.git/blame - ceph/src/librbd/io/Types.h
import 15.2.0 Octopus source
[ceph.git] / ceph / src / librbd / io / Types.h
CommitLineData
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
12namespace librbd {
13namespace 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
29typedef 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
42enum FlushSource {
43 FLUSH_SOURCE_USER,
44 FLUSH_SOURCE_INTERNAL,
45 FLUSH_SOURCE_SHUTDOWN
46};
47
224ce89b
WB
48enum Direction {
49 DIRECTION_READ,
50 DIRECTION_WRITE,
51 DIRECTION_BOTH
52};
53
11fdf7f2
TL
54enum DispatchResult {
55 DISPATCH_RESULT_INVALID,
56 DISPATCH_RESULT_CONTINUE,
57 DISPATCH_RESULT_COMPLETE
58};
59
60enum 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
70enum {
71 OBJECT_DISCARD_FLAG_DISABLE_CLONE_REMOVE = 1UL << 0,
72 OBJECT_DISCARD_FLAG_DISABLE_OBJECT_MAP_UPDATE = 1UL << 1
73};
74
75enum {
76 OBJECT_DISPATCH_FLAG_FLUSH = 1UL << 0,
77 OBJECT_DISPATCH_FLAG_WILL_RETRY_ON_ERROR = 1UL << 1
78};
79
9f95a23c
TL
80using striper::LightweightBufferExtents;
81using striper::LightweightObjectExtent;
82using striper::LightweightObjectExtents;
83
84typedef std::pair<uint64_t,uint64_t> Extent;
85typedef std::vector<Extent> Extents;
86
7c673cae
FG
87typedef std::map<uint64_t, uint64_t> ExtentMap;
88
89} // namespace io
90} // namespace librbd
91
92#endif // CEPH_LIBRBD_IO_TYPES_H