rbd: fix clone issue when we specify image feature

Fixes: #13553

Signed-off-by: xinxin shu <xinxin.shu@intel.com>
This commit is contained in:
xinxin shu 2015-10-21 14:56:17 +08:00
parent 89b2b9b5c0
commit da48dbb8f8

View File

@ -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;