From: xinxin shu Date: Wed, 21 Oct 2015 06:56:17 +0000 (+0800) Subject: rbd: fix clone issue when we specify image feature X-Git-Tag: v9.2.1~44^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=c2e7fe98738cd31c0886d594920c50a53cbf9bf4;p=ceph.git rbd: fix clone issue when we specify image feature Fixes: #13553 Signed-off-by: xinxin shu (cherry picked from commit da48dbb8f8c9417343d2ca7819c58b7c46ef7ad0) --- diff --git a/src/rbd.cc b/src/rbd.cc index ff9cf40064537..540579fbc7d4a 100755 --- a/src/rbd.cc +++ b/src/rbd.cc @@ -3265,12 +3265,6 @@ int main(int argc, const char **argv) } } - if (features != 0 && !format_specified) { - format = 2; - format_specified = true; - } else if (features == 0) { - features = g_conf->rbd_default_features; - } if (shared) { features &= ~(RBD_FEATURE_EXCLUSIVE_LOCK | RBD_FEATURE_OBJECT_MAP); } @@ -3405,8 +3399,13 @@ if (!set_conf_param(v, p1, p2, p3)) { \ /* get defaults from rbd_default_* options to keep behavior consistent with manual short-form options */ - if (!format_specified) - format = g_conf->rbd_default_format; + if (features != 0 && !format_specified) { + format = 2; + } else if (features == 0) { + features = g_conf->rbd_default_features; + if (!format_specified) + format = g_conf->rbd_default_format; + } if (!order) order = g_conf->rbd_default_order; if (!stripe_unit) @@ -3582,6 +3581,10 @@ if (!set_conf_param(v, p1, p2, p3)) { \ cerr << "rbd: clone must begin at size of parent" << std::endl; return EXIT_FAILURE; } + if ((opt_cmd == OPT_CLONE) && + ((features & RBD_FEATURE_LAYERING) != RBD_FEATURE_LAYERING)) { + features |= RBD_FEATURE_LAYERING; + } if ((opt_cmd == OPT_RENAME) && (strcmp(poolname, dest_poolname) != 0)) { cerr << "rbd: mv/rename across pools not supported" << std::endl;