]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
cls/rbd: prevent creating image with internal feature bits enabled
authorJason Dillaman <dillaman@redhat.com>
Thu, 17 May 2018 17:11:09 +0000 (13:11 -0400)
committerJason Dillaman <dillaman@redhat.com>
Fri, 18 May 2018 14:25:46 +0000 (10:25 -0400)
Fixes: http://tracker.ceph.com/issues/24165
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/cls/rbd/cls_rbd.cc
src/test/cls_rbd/test_cls_rbd.cc

index 4bdcfcf0cebad0acbe3e6fc2e42d02ed162c22e2..03a10b5f3c41d8f38a3017d115c906c94c32db3b 100644 (file)
@@ -360,6 +360,12 @@ int create(cls_method_context_t hctx, bufferlist *in, bufferlist *out)
   omap_vals["snap_seq"] = snap_seqbl;
   omap_vals["create_timestamp"] = create_timestampbl;
 
+  if ((features & RBD_FEATURES_INTERNAL) != 0ULL) {
+    CLS_ERR("Attempting to set internal feature: %" PRIu64,
+            static_cast<uint64_t>(features & RBD_FEATURES_INTERNAL));
+    return -EINVAL;
+  }
+
   if (features & RBD_FEATURE_DATA_POOL) {
     if (data_pool_id == -1) {
       CLS_ERR("data pool not provided with feature enabled");
index 2132d56b031b77f913f76635b0e27dec633a74c8..abdb7a9797db1707f54b96a36676b25a4f056c84 100644 (file)
@@ -371,6 +371,8 @@ TEST_F(TestClsRbd, create)
   ASSERT_EQ(0, create_image(&ioctx, oid, size, order, RBD_FEATURE_DATA_POOL,
                             object_prefix, 123));
   ASSERT_EQ(0, ioctx.remove(oid));
+  ASSERT_EQ(-EINVAL, create_image(&ioctx, oid, size, order,
+                                  RBD_FEATURE_OPERATIONS, object_prefix, -1));
   ASSERT_EQ(-EINVAL, create_image(&ioctx, oid, size, order,
                                   RBD_FEATURE_DATA_POOL, object_prefix, -1));
   ASSERT_EQ(-EINVAL, create_image(&ioctx, oid, size, order, 0, object_prefix,