]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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) | |
11fdf7f2 TL |
12 | #define RBD_FEATURE_OPERATIONS (1ULL<<8) |
13 | #define RBD_FEATURE_MIGRATING (1ULL<<9) | |
7c673cae FG |
14 | |
15 | #define RBD_FEATURES_DEFAULT (RBD_FEATURE_LAYERING | \ | |
16 | RBD_FEATURE_EXCLUSIVE_LOCK | \ | |
17 | RBD_FEATURE_OBJECT_MAP | \ | |
18 | RBD_FEATURE_FAST_DIFF | \ | |
19 | RBD_FEATURE_DEEP_FLATTEN) | |
20 | ||
21 | #define RBD_FEATURE_NAME_LAYERING "layering" | |
22 | #define RBD_FEATURE_NAME_STRIPINGV2 "striping" | |
23 | #define RBD_FEATURE_NAME_EXCLUSIVE_LOCK "exclusive-lock" | |
24 | #define RBD_FEATURE_NAME_OBJECT_MAP "object-map" | |
25 | #define RBD_FEATURE_NAME_FAST_DIFF "fast-diff" | |
26 | #define RBD_FEATURE_NAME_DEEP_FLATTEN "deep-flatten" | |
27 | #define RBD_FEATURE_NAME_JOURNALING "journaling" | |
28 | #define RBD_FEATURE_NAME_DATA_POOL "data-pool" | |
11fdf7f2 TL |
29 | #define RBD_FEATURE_NAME_OPERATIONS "operations" |
30 | #define RBD_FEATURE_NAME_MIGRATING "migrating" | |
7c673cae FG |
31 | |
32 | /// features that make an image inaccessible for read or write by | |
33 | /// clients that don't understand them | |
34 | #define RBD_FEATURES_INCOMPATIBLE (RBD_FEATURE_LAYERING | \ | |
35 | RBD_FEATURE_STRIPINGV2 | \ | |
36 | RBD_FEATURE_DATA_POOL) | |
37 | ||
38 | /// features that make an image unwritable by clients that don't understand them | |
39 | #define RBD_FEATURES_RW_INCOMPATIBLE (RBD_FEATURES_INCOMPATIBLE | \ | |
40 | RBD_FEATURE_EXCLUSIVE_LOCK | \ | |
41 | RBD_FEATURE_OBJECT_MAP | \ | |
42 | RBD_FEATURE_FAST_DIFF | \ | |
43 | RBD_FEATURE_DEEP_FLATTEN | \ | |
11fdf7f2 TL |
44 | RBD_FEATURE_JOURNALING | \ |
45 | RBD_FEATURE_OPERATIONS | \ | |
46 | RBD_FEATURE_MIGRATING) | |
7c673cae FG |
47 | |
48 | #define RBD_FEATURES_ALL (RBD_FEATURE_LAYERING | \ | |
49 | RBD_FEATURE_STRIPINGV2 | \ | |
50 | RBD_FEATURE_EXCLUSIVE_LOCK | \ | |
51 | RBD_FEATURE_OBJECT_MAP | \ | |
52 | RBD_FEATURE_FAST_DIFF | \ | |
53 | RBD_FEATURE_DEEP_FLATTEN | \ | |
54 | RBD_FEATURE_JOURNALING | \ | |
11fdf7f2 TL |
55 | RBD_FEATURE_DATA_POOL | \ |
56 | RBD_FEATURE_OPERATIONS | \ | |
57 | RBD_FEATURE_MIGRATING) | |
7c673cae FG |
58 | |
59 | /// features that may be dynamically enabled or disabled | |
60 | #define RBD_FEATURES_MUTABLE (RBD_FEATURE_EXCLUSIVE_LOCK | \ | |
61 | RBD_FEATURE_OBJECT_MAP | \ | |
62 | RBD_FEATURE_FAST_DIFF | \ | |
63 | RBD_FEATURE_JOURNALING) | |
64 | ||
65 | /// features that may be dynamically disabled | |
66 | #define RBD_FEATURES_DISABLE_ONLY (RBD_FEATURE_DEEP_FLATTEN) | |
67 | ||
68 | /// features that only work when used with a single client | |
69 | /// using the image for writes | |
70 | #define RBD_FEATURES_SINGLE_CLIENT (RBD_FEATURE_EXCLUSIVE_LOCK | \ | |
71 | RBD_FEATURE_OBJECT_MAP | \ | |
72 | RBD_FEATURE_FAST_DIFF | \ | |
73 | RBD_FEATURE_JOURNALING) | |
74 | ||
11fdf7f2 TL |
75 | /// features that will be implicitly enabled |
76 | #define RBD_FEATURES_IMPLICIT_ENABLE (RBD_FEATURE_STRIPINGV2 | \ | |
77 | RBD_FEATURE_DATA_POOL | \ | |
78 | RBD_FEATURE_FAST_DIFF | \ | |
79 | RBD_FEATURE_OPERATIONS | \ | |
80 | RBD_FEATURE_MIGRATING) | |
81 | ||
82 | /// features that cannot be controlled by the user | |
83 | #define RBD_FEATURES_INTERNAL (RBD_FEATURE_OPERATIONS | \ | |
84 | RBD_FEATURE_MIGRATING) | |
85 | ||
86 | #define RBD_OPERATION_FEATURE_CLONE_PARENT (1ULL<<0) | |
87 | #define RBD_OPERATION_FEATURE_CLONE_CHILD (1ULL<<1) | |
88 | #define RBD_OPERATION_FEATURE_GROUP (1ULL<<2) | |
89 | #define RBD_OPERATION_FEATURE_SNAP_TRASH (1ULL<<3) | |
90 | ||
91 | #define RBD_OPERATION_FEATURE_NAME_CLONE_PARENT "clone-parent" | |
92 | #define RBD_OPERATION_FEATURE_NAME_CLONE_CHILD "clone-child" | |
93 | #define RBD_OPERATION_FEATURE_NAME_GROUP "group" | |
94 | #define RBD_OPERATION_FEATURE_NAME_SNAP_TRASH "snap-trash" | |
95 | ||
96 | /// all valid operation features | |
97 | #define RBD_OPERATION_FEATURES_ALL (RBD_OPERATION_FEATURE_CLONE_PARENT | \ | |
98 | RBD_OPERATION_FEATURE_CLONE_CHILD | \ | |
99 | RBD_OPERATION_FEATURE_GROUP | \ | |
100 | RBD_OPERATION_FEATURE_SNAP_TRASH) | |
101 | ||
7c673cae | 102 | #endif |