]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: add IMAGE_CACHE feature
authorYuan Lu <yuan.y.lu@intel.com>
Tue, 9 Jun 2020 16:36:11 +0000 (00:36 +0800)
committerlixiaoy1 <xiaoyan.li@intel.com>
Mon, 3 Aug 2020 09:37:13 +0000 (05:37 -0400)
Signed-off-by: Peterson, Scott <scott.d.peterson@intel.com>
Signed-off-by: Li, Xiaoyan <xiaoyan.li@intel.com>
Signed-off-by: Lu, Yuan <yuan.y.lu@intel.com>
Signed-off-by: Chamarthy, Mahati <mahati.chamarthy@intel.com>
src/include/rbd/features.h
src/librbd/Features.cc

index 06b5cd06471b3ce4ebb1a70c6d26937c710b4374..80f96107890e438af9a5851d4705a283afe73ad5 100644 (file)
@@ -1,10 +1,13 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+
 #ifndef CEPH_RBD_FEATURES_H
 #define CEPH_RBD_FEATURES_H
 
-#define RBD_FEATURE_LAYERING           (1ULL<<0)
-#define RBD_FEATURE_STRIPINGV2         (1ULL<<1)
-#define RBD_FEATURE_EXCLUSIVE_LOCK     (1ULL<<2)
-#define RBD_FEATURE_OBJECT_MAP         (1ULL<<3)
+#define RBD_FEATURE_LAYERING            (1ULL<<0)
+#define RBD_FEATURE_STRIPINGV2          (1ULL<<1)
+#define RBD_FEATURE_EXCLUSIVE_LOCK      (1ULL<<2)
+#define RBD_FEATURE_OBJECT_MAP          (1ULL<<3)
 #define RBD_FEATURE_FAST_DIFF           (1ULL<<4)
 #define RBD_FEATURE_DEEP_FLATTEN        (1ULL<<5)
 #define RBD_FEATURE_JOURNALING          (1ULL<<6)
@@ -12,6 +15,7 @@
 #define RBD_FEATURE_OPERATIONS          (1ULL<<8)
 #define RBD_FEATURE_MIGRATING           (1ULL<<9)
 #define RBD_FEATURE_NON_PRIMARY         (1ULL<<10)
+#define RBD_FEATURE_DIRTY_CACHE         (1ULL<<11)
 
 #define RBD_FEATURES_DEFAULT             (RBD_FEATURE_LAYERING | \
                                          RBD_FEATURE_EXCLUSIVE_LOCK | \
 #define RBD_FEATURE_NAME_OPERATIONS      "operations"
 #define RBD_FEATURE_NAME_MIGRATING       "migrating"
 #define RBD_FEATURE_NAME_NON_PRIMARY     "non-primary"
+#define RBD_FEATURE_NAME_DIRTY_CACHE     "dirty-cache"
 
 /// features that make an image inaccessible for read or write by
 /// clients that don't understand them
-#define RBD_FEATURES_INCOMPATIBLE      (RBD_FEATURE_LAYERING       | \
-                                        RBD_FEATURE_STRIPINGV2     | \
-                                         RBD_FEATURE_DATA_POOL)
+#define RBD_FEATURES_INCOMPATIBLE       (RBD_FEATURE_LAYERING       | \
+                                         RBD_FEATURE_STRIPINGV2     | \
+                                         RBD_FEATURE_DATA_POOL      | \
+                                         RBD_FEATURE_DIRTY_CACHE)
 
 /// features that make an image unwritable by clients that don't understand them
-#define RBD_FEATURES_RW_INCOMPATIBLE   (RBD_FEATURES_INCOMPATIBLE  | \
-                                        RBD_FEATURE_EXCLUSIVE_LOCK | \
-                                        RBD_FEATURE_OBJECT_MAP     | \
+#define RBD_FEATURES_RW_INCOMPATIBLE    (RBD_FEATURES_INCOMPATIBLE  | \
+                                         RBD_FEATURE_EXCLUSIVE_LOCK | \
+                                         RBD_FEATURE_OBJECT_MAP     | \
                                          RBD_FEATURE_FAST_DIFF      | \
                                          RBD_FEATURE_DEEP_FLATTEN   | \
                                          RBD_FEATURE_JOURNALING     | \
@@ -48,9 +54,9 @@
                                          RBD_FEATURE_MIGRATING      | \
                                          RBD_FEATURE_NON_PRIMARY)
 
-#define RBD_FEATURES_ALL               (RBD_FEATURE_LAYERING       | \
-                                        RBD_FEATURE_STRIPINGV2     | \
-                                        RBD_FEATURE_EXCLUSIVE_LOCK | \
+#define RBD_FEATURES_ALL                (RBD_FEATURE_LAYERING       | \
+                                         RBD_FEATURE_STRIPINGV2     | \
+                                         RBD_FEATURE_EXCLUSIVE_LOCK | \
                                          RBD_FEATURE_OBJECT_MAP     | \
                                          RBD_FEATURE_FAST_DIFF      | \
                                          RBD_FEATURE_DEEP_FLATTEN   | \
                                          RBD_FEATURE_DATA_POOL      | \
                                          RBD_FEATURE_OPERATIONS     | \
                                          RBD_FEATURE_MIGRATING      | \
-                                         RBD_FEATURE_NON_PRIMARY)
+                                         RBD_FEATURE_NON_PRIMARY    | \
+                                         RBD_FEATURE_DIRTY_CACHE)
 
 /// features that may be dynamically enabled or disabled
 #define RBD_FEATURES_MUTABLE            (RBD_FEATURE_EXCLUSIVE_LOCK | \
                                          RBD_FEATURE_OBJECT_MAP     | \
                                          RBD_FEATURE_FAST_DIFF      | \
                                          RBD_FEATURE_JOURNALING     | \
-                                         RBD_FEATURE_NON_PRIMARY)
-#define RBD_FEATURES_MUTABLE_INTERNAL   (RBD_FEATURE_NON_PRIMARY)
+                                         RBD_FEATURE_NON_PRIMARY    | \
+                                         RBD_FEATURE_DIRTY_CACHE)
+
+#define RBD_FEATURES_MUTABLE_INTERNAL   (RBD_FEATURE_NON_PRIMARY    | \
+                                         RBD_FEATURE_DIRTY_CACHE)
 
 /// features that may be dynamically disabled
 #define RBD_FEATURES_DISABLE_ONLY       (RBD_FEATURE_DEEP_FLATTEN)
@@ -76,7 +86,8 @@
 #define RBD_FEATURES_SINGLE_CLIENT (RBD_FEATURE_EXCLUSIVE_LOCK | \
                                     RBD_FEATURE_OBJECT_MAP     | \
                                     RBD_FEATURE_FAST_DIFF      | \
-                                    RBD_FEATURE_JOURNALING)
+                                    RBD_FEATURE_JOURNALING     | \
+                                    RBD_FEATURE_DIRTY_CACHE)
 
 /// features that will be implicitly enabled
 #define RBD_FEATURES_IMPLICIT_ENABLE  (RBD_FEATURE_STRIPINGV2  | \
index 1531a2eab4d881213790ceb5ab2a05a1701b814e..9da5b1dc42d7535c0d23cb855e5c7047f71afd88 100644 (file)
@@ -22,8 +22,9 @@ static const std::map<std::string, uint64_t> RBD_FEATURE_MAP = {
   {RBD_FEATURE_NAME_OPERATIONS, RBD_FEATURE_OPERATIONS},
   {RBD_FEATURE_NAME_MIGRATING, RBD_FEATURE_MIGRATING},
   {RBD_FEATURE_NAME_NON_PRIMARY, RBD_FEATURE_NON_PRIMARY},
+  {RBD_FEATURE_NAME_DIRTY_CACHE, RBD_FEATURE_DIRTY_CACHE},
 };
-static_assert((RBD_FEATURE_NON_PRIMARY << 1) > RBD_FEATURES_ALL,
+static_assert((RBD_FEATURE_DIRTY_CACHE << 1) > RBD_FEATURES_ALL,
              "new RBD feature added");