]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd: clone: default to parent features
authorMykola Golub <mgolub@mirantis.com>
Mon, 23 May 2016 06:16:38 +0000 (09:16 +0300)
committerAbhishek Varshney <abhishek.varshney@flipkart.com>
Tue, 7 Jun 2016 13:44:59 +0000 (19:14 +0530)
Fixes: http://tracker.ceph.com/issues/15982
Signed-off-by: Mykola Golub <mgolub@mirantis.com>
(cherry picked from commit d305eaad8d57a6f64e6d80eebcd0839a65c9a668)

src/librbd/internal.cc

index 2445bdacd3bab2964084337a4c9926f04d37690f..147529f5facbdee268176a5cb6bc2fde4c7a0cb8 100644 (file)
@@ -1431,12 +1431,14 @@ int mirror_image_disable_internal(ImageCtx *ictx, bool force,
       return -EINVAL;
     }
 
+    bool use_p_features = true;
     uint64_t features;
-    if (c_opts.get(RBD_IMAGE_OPTION_FEATURES, &features) != 0) {
+    if (c_opts.get(RBD_IMAGE_OPTION_FEATURES, &features) == 0) {
       if (features & ~RBD_FEATURES_ALL) {
        lderr(cct) << "librbd does not support requested features" << dendl;
        return -ENOSYS;
       }
+      use_p_features = false;
     }
 
     // make sure child doesn't already exist, in either format
@@ -1472,7 +1474,7 @@ int mirror_image_disable_internal(ImageCtx *ictx, bool force,
       lderr(cct) << "parent image must support layering" << dendl;
       return -ENOSYS;
     }
-    
+
     if (r < 0) {
       // we lost the race with snap removal?
       lderr(cct) << "unable to locate parent's snapshot" << dendl;
@@ -1484,6 +1486,10 @@ int mirror_image_disable_internal(ImageCtx *ictx, bool force,
       return -EINVAL;
     }
 
+    if (use_p_features) {
+      c_opts.set(RBD_IMAGE_OPTION_FEATURES, p_features);
+    }
+
     order = p_imctx->order;
     if (c_opts.get(RBD_IMAGE_OPTION_ORDER, &order) != 0) {
       c_opts.set(RBD_IMAGE_OPTION_ORDER, order);