]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd/clone: set RBD_FEATURE_STRIPINGV2 in feature if stripe related options specified
authorDongsheng Yang <dongsheng.yang@easystack.cn>
Thu, 2 Jun 2016 08:32:15 +0000 (04:32 -0400)
committerDongsheng Yang <dongsheng.yang@easystack.cn>
Fri, 22 Jul 2016 11:04:08 +0000 (07:04 -0400)
Signed-off-by: Dongsheng Yang <dongsheng.yang@easystack.cn>
src/librbd/internal.cc

index d0be37f7c110b7a5e4611a038dbe8e316c0023c8..bf009dfa38c177d314ad86ec04a7f0d35f49e3ec 100644 (file)
@@ -1487,7 +1487,7 @@ int mirror_image_disable_internal(ImageCtx *ictx, bool force,
     }
 
     if (use_p_features) {
-      c_opts.set(RBD_IMAGE_OPTION_FEATURES, p_features);
+      features = p_features;
     }
 
     order = p_imctx->order;
@@ -1495,6 +1495,12 @@ int mirror_image_disable_internal(ImageCtx *ictx, bool force,
       c_opts.set(RBD_IMAGE_OPTION_ORDER, order);
     }
 
+    if (c_opts.get(RBD_IMAGE_OPTION_STRIPE_UNIT, &stripe_unit) == 0 ||
+       c_opts.get(RBD_IMAGE_OPTION_STRIPE_COUNT, &stripe_count) == 0) {
+      features |= RBD_FEATURE_STRIPINGV2;
+    }
+
+    c_opts.set(RBD_IMAGE_OPTION_FEATURES, features);
     r = create(c_ioctx, c_name, size, c_opts, non_primary_global_image_id,
                primary_mirror_uuid);
     if (r < 0) {