]> sourceware.org Git - lvm2.git/commitdiff
toollib: Record whether or not stripes/stripe_size args supplied.
authorAlasdair G Kergon <agk@redhat.com>
Fri, 19 Aug 2016 12:51:43 +0000 (13:51 +0100)
committerAlasdair G Kergon <agk@redhat.com>
Fri, 19 Aug 2016 12:51:43 +0000 (13:51 +0100)
lib/metadata/metadata-exported.h
tools/lvconvert.c
tools/lvcreate.c
tools/toollib.c
tools/toollib.h

index 97692dc7aba6653d5d61d1e61ea94bbb96e2ea45..37db89c10f7817d2c2e4dccafb190c3e5de5fecc 100644 (file)
@@ -945,6 +945,9 @@ struct lvcreate_params {
        uint32_t chunk_size; /* snapshot */
        uint32_t region_size; /* mirror */
 
+       unsigned stripes_supplied; /* striped */
+       unsigned stripe_size_supplied; /* striped */
+
        uint32_t mirrors; /* mirror */
 
        uint32_t min_recovery_rate; /* RAID */
index 23e3cd54bcbb458511f3b5d56d9c79c25074bc2a..ac019ecee151019c5bd19fa15795dae2e309dce5 100644 (file)
@@ -86,7 +86,8 @@ struct lvconvert_params {
        sign_t mirrors_sign;
        uint32_t stripes;
        uint32_t stripe_size;
-       uint32_t stripe_size_supplied;
+       unsigned stripes_supplied;
+       unsigned stripe_size_supplied;
        uint32_t read_ahead;
        cache_mode_t cache_mode; /* cache */
        const char *policy_name; /* cache */
@@ -3183,7 +3184,7 @@ static int _lvconvert_pool(struct cmd_context *cmd,
                        return_0;
 
                if (!get_stripe_params(cmd, get_segtype_from_string(cmd, SEG_TYPE_NAME_STRIPED),
-                                      &lp->stripes, &lp->stripe_size))
+                                      &lp->stripes, &lp->stripe_size, &lp->stripes_supplied, &lp->stripe_size_supplied))
                        return_0;
 
                if (!archive(vg))
@@ -4473,10 +4474,8 @@ static int _lvconvert(struct cmd_context *cmd, struct logical_volume *lv,
        if (_mirror_or_raid_type_requested(cmd, lp->type_str) || _raid0_type_requested(lp->type_str) ||
            _striped_type_requested(lp->type_str) || lp->repair || lp->mirrorlog || lp->corelog) {
                /* FIXME Handle +/- adjustments too? */
-               if (!get_stripe_params(cmd, lp->segtype, &lp->stripes, &lp->stripe_size))
+               if (!get_stripe_params(cmd, lp->segtype, &lp->stripes, &lp->stripe_size, &lp->stripes_supplied, &lp->stripe_size_supplied))
                        return_0;
-               /* FIXME Move this into the get function */
-               lp->stripe_size_supplied = arg_is_set(cmd, stripesize_ARG);
 
                if (_raid0_type_requested(lp->type_str) || _striped_type_requested(lp->type_str))
                        /* FIXME Shouldn't need to override get_stripe_params which defaults to 1 stripe (i.e. linear)! */
index a389d7952fc67ba52062a00c9962cda2a13c7ac1..6fd0fb9f1bfd5d06ab80cc7b927accc3eaaee521 100644 (file)
@@ -1061,7 +1061,7 @@ static int _lvcreate_params(struct cmd_context *cmd,
 
        if (!_lvcreate_name_params(cmd, &argc, &argv, lp) ||
            !_read_size_params(cmd, lp, lcp) ||
-           !get_stripe_params(cmd, lp->segtype, &lp->stripes, &lp->stripe_size) ||
+           !get_stripe_params(cmd, lp->segtype, &lp->stripes, &lp->stripe_size, &lp->stripes_supplied, &lp->stripe_size_supplied) ||
            (lp->create_pool &&
             !get_pool_params(cmd, lp->segtype, &lp->passed_args,
                              &lp->pool_metadata_size, &lp->pool_metadata_spare,
index 4f8cbb4af1ab65fa4aca9cd92b88f704b2f1a441..4f4c31551194c64e0ae6d6cd39668658019e6406 100644 (file)
@@ -1318,13 +1318,17 @@ static int _validate_stripe_params(struct cmd_context *cmd, const struct segment
  * power of 2, we must divide UINT_MAX by four and add 1 (to round it
  * up to the power of 2)
  */
-int get_stripe_params(struct cmd_context *cmd, const struct segment_type *segtype, uint32_t *stripes, uint32_t *stripe_size)
+int get_stripe_params(struct cmd_context *cmd, const struct segment_type *segtype,
+                     uint32_t *stripes, uint32_t *stripe_size,
+                     unsigned *stripes_supplied, unsigned *stripe_size_supplied)
 {
        /* stripes_long_ARG takes precedence (for lvconvert) */
        /* FIXME Cope with relative +/- changes for lvconvert. */
        *stripes = arg_uint_value(cmd, arg_is_set(cmd, stripes_long_ARG) ? stripes_long_ARG : stripes_ARG, 1);
+       *stripes_supplied = arg_is_set(cmd, stripes_long_ARG) ? : arg_is_set(cmd, stripes_ARG);
 
        *stripe_size = arg_uint_value(cmd, stripesize_ARG, 0);
+       *stripe_size_supplied = arg_is_set(cmd, stripesize_ARG);
        if (*stripe_size) {
                if (arg_sign_value(cmd, stripesize_ARG, SIGN_NONE) == SIGN_MINUS) {
                        log_error("Negative stripesize is invalid.");
index d5de73319085e704b355a3a991abc698d7dfecc7..531f690d0b911c2d0d435abc29469253fea251f9 100644 (file)
@@ -197,7 +197,8 @@ int get_pool_params(struct cmd_context *cmd,
                    int *zero);
 
 int get_stripe_params(struct cmd_context *cmd, const struct segment_type *segtype,
-                     uint32_t *stripes, uint32_t *stripe_size);
+                     uint32_t *stripes, uint32_t *stripe_size,
+                     unsigned *stripes_supplied, unsigned *stripe_size_supplied);
 
 int get_cache_params(struct cmd_context *cmd,
                     cache_mode_t *cache_mode,
This page took 0.056861 seconds and 5 git commands to generate.