From: Dongsheng Yang Date: Thu, 2 Jun 2016 07:56:53 +0000 (-0400) Subject: tools/rbd: only set the options specified by user in get_image_options(). X-Git-Tag: ses5-milestone5~281^2~12 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a9db19991d72031a45f59499c84e6a99b148968f;p=ceph.git tools/rbd: only set the options specified by user in get_image_options(). Signed-off-by: Dongsheng Yang --- diff --git a/src/tools/rbd/Utils.cc b/src/tools/rbd/Utils.cc index 92ca721a991e..90712e78cc80 100644 --- a/src/tools/rbd/Utils.cc +++ b/src/tools/rbd/Utils.cc @@ -422,8 +422,10 @@ int validate_snapshot_name(at::ArgumentModifier mod, int get_image_options(const boost::program_options::variables_map &vm, bool get_format, librbd::ImageOptions *opts) { - uint64_t order, features, stripe_unit, stripe_count, object_size; + uint64_t order, features = 0, stripe_unit, stripe_count, object_size; + bool order_specified = true; bool features_specified = false; + bool stripe_specified = false; if (vm.count(at::IMAGE_ORDER)) { order = vm[at::IMAGE_ORDER].as(); @@ -433,26 +435,22 @@ int get_image_options(const boost::program_options::variables_map &vm, object_size = vm[at::IMAGE_OBJECT_SIZE].as(); order = std::round(std::log2(object_size)); } else { - order = g_conf->rbd_default_order; + order_specified = false; } if (vm.count(at::IMAGE_FEATURES)) { features = vm[at::IMAGE_FEATURES].as(); features_specified = true; - } else { - features = g_conf->rbd_default_features; } if (vm.count(at::IMAGE_STRIPE_UNIT)) { stripe_unit = vm[at::IMAGE_STRIPE_UNIT].as(); - } else { - stripe_unit = g_conf->rbd_default_stripe_unit; + stripe_specified = true; } if (vm.count(at::IMAGE_STRIPE_COUNT)) { stripe_count = vm[at::IMAGE_STRIPE_COUNT].as(); - } else { - stripe_count = g_conf->rbd_default_stripe_count; + stripe_specified = true; } if ((stripe_unit != 0 && stripe_count == 0) || @@ -480,10 +478,11 @@ int get_image_options(const boost::program_options::variables_map &vm, if (vm.count(at::IMAGE_SHARED) && vm[at::IMAGE_SHARED].as()) { features &= ~RBD_FEATURES_SINGLE_CLIENT; + features_specified = true; } if (get_format) { - uint64_t format; + uint64_t format = 0; bool format_specified = false; if (vm.count(at::IMAGE_NEW_FORMAT)) { format = 2; @@ -491,8 +490,6 @@ int get_image_options(const boost::program_options::variables_map &vm, } else if (vm.count(at::IMAGE_FORMAT)) { format = vm[at::IMAGE_FORMAT].as(); format_specified = true; - } else { - format = g_conf->rbd_default_format; } if (format == 1) { std::cerr << "rbd: image format 1 is deprecated" << std::endl; @@ -524,15 +521,18 @@ int get_image_options(const boost::program_options::variables_map &vm, if (format_specified) { int r = g_conf->set_val("rbd_default_format", stringify(format)); assert(r == 0); + opts->set(RBD_IMAGE_OPTION_FORMAT, format); } - - opts->set(RBD_IMAGE_OPTION_FORMAT, format); } - opts->set(RBD_IMAGE_OPTION_ORDER, order); - opts->set(RBD_IMAGE_OPTION_FEATURES, features); - opts->set(RBD_IMAGE_OPTION_STRIPE_UNIT, stripe_unit); - opts->set(RBD_IMAGE_OPTION_STRIPE_COUNT, stripe_count); + if (order_specified) + opts->set(RBD_IMAGE_OPTION_ORDER, order); + if (features_specified) + opts->set(RBD_IMAGE_OPTION_FEATURES, features); + if (stripe_specified) { + opts->set(RBD_IMAGE_OPTION_STRIPE_UNIT, stripe_unit); + opts->set(RBD_IMAGE_OPTION_STRIPE_COUNT, stripe_count); + } int r = get_journal_options(vm, opts); if (r < 0) {