]> git.proxmox.com Git - ceph.git/blob - ceph/src/include/rbd/features.h
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / include / rbd / features.h
1 #ifndef CEPH_RBD_FEATURES_H
2 #define CEPH_RBD_FEATURES_H
3
4 #define RBD_FEATURE_LAYERING (1ULL<<0)
5 #define RBD_FEATURE_STRIPINGV2 (1ULL<<1)
6 #define RBD_FEATURE_EXCLUSIVE_LOCK (1ULL<<2)
7 #define RBD_FEATURE_OBJECT_MAP (1ULL<<3)
8 #define RBD_FEATURE_FAST_DIFF (1ULL<<4)
9 #define RBD_FEATURE_DEEP_FLATTEN (1ULL<<5)
10 #define RBD_FEATURE_JOURNALING (1ULL<<6)
11 #define RBD_FEATURE_DATA_POOL (1ULL<<7)
12
13 #define RBD_FEATURES_DEFAULT (RBD_FEATURE_LAYERING | \
14 RBD_FEATURE_EXCLUSIVE_LOCK | \
15 RBD_FEATURE_OBJECT_MAP | \
16 RBD_FEATURE_FAST_DIFF | \
17 RBD_FEATURE_DEEP_FLATTEN)
18
19 #define RBD_FEATURE_NAME_LAYERING "layering"
20 #define RBD_FEATURE_NAME_STRIPINGV2 "striping"
21 #define RBD_FEATURE_NAME_EXCLUSIVE_LOCK "exclusive-lock"
22 #define RBD_FEATURE_NAME_OBJECT_MAP "object-map"
23 #define RBD_FEATURE_NAME_FAST_DIFF "fast-diff"
24 #define RBD_FEATURE_NAME_DEEP_FLATTEN "deep-flatten"
25 #define RBD_FEATURE_NAME_JOURNALING "journaling"
26 #define RBD_FEATURE_NAME_DATA_POOL "data-pool"
27
28 /// features that make an image inaccessible for read or write by
29 /// clients that don't understand them
30 #define RBD_FEATURES_INCOMPATIBLE (RBD_FEATURE_LAYERING | \
31 RBD_FEATURE_STRIPINGV2 | \
32 RBD_FEATURE_DATA_POOL)
33
34 /// features that make an image unwritable by clients that don't understand them
35 #define RBD_FEATURES_RW_INCOMPATIBLE (RBD_FEATURES_INCOMPATIBLE | \
36 RBD_FEATURE_EXCLUSIVE_LOCK | \
37 RBD_FEATURE_OBJECT_MAP | \
38 RBD_FEATURE_FAST_DIFF | \
39 RBD_FEATURE_DEEP_FLATTEN | \
40 RBD_FEATURE_JOURNALING)
41
42 #define RBD_FEATURES_ALL (RBD_FEATURE_LAYERING | \
43 RBD_FEATURE_STRIPINGV2 | \
44 RBD_FEATURE_EXCLUSIVE_LOCK | \
45 RBD_FEATURE_OBJECT_MAP | \
46 RBD_FEATURE_FAST_DIFF | \
47 RBD_FEATURE_DEEP_FLATTEN | \
48 RBD_FEATURE_JOURNALING | \
49 RBD_FEATURE_DATA_POOL)
50
51 /// features that may be dynamically enabled or disabled
52 #define RBD_FEATURES_MUTABLE (RBD_FEATURE_EXCLUSIVE_LOCK | \
53 RBD_FEATURE_OBJECT_MAP | \
54 RBD_FEATURE_FAST_DIFF | \
55 RBD_FEATURE_JOURNALING)
56
57 /// features that may be dynamically disabled
58 #define RBD_FEATURES_DISABLE_ONLY (RBD_FEATURE_DEEP_FLATTEN)
59
60 /// features that only work when used with a single client
61 /// using the image for writes
62 #define RBD_FEATURES_SINGLE_CLIENT (RBD_FEATURE_EXCLUSIVE_LOCK | \
63 RBD_FEATURE_OBJECT_MAP | \
64 RBD_FEATURE_FAST_DIFF | \
65 RBD_FEATURE_JOURNALING)
66
67 #endif