Fix some bugs when testing opensds ansible
[stor4nfv.git] / src / 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