diff options
-rw-r--r-- | tools/args.h | 4 | ||||
-rw-r--r-- | tools/lvmcmdline.c | 29 | ||||
-rw-r--r-- | tools/tools.h | 3 |
3 files changed, 14 insertions, 22 deletions
diff --git a/tools/args.h b/tools/args.h index ebce2520..a23c46cb 100644 --- a/tools/args.h +++ b/tools/args.h @@ -23,8 +23,8 @@ arg(physicalvolumesize_ARG, '\0', "setphysicalvolumesize", size_mb_arg, 0) arg(ignorelockingfailure_ARG, '\0', "ignorelockingfailure", NULL, 0) arg(nolocking_ARG, '\0', "nolocking", NULL, 0) arg(pvmetadatacopies_ARG, '\0', "pvmetadatacopies", int_arg, 0) -arg(vgmetadatacopies_ARG, '\0', "vgmetadatacopies", vgmetadatacopies_arg, 0) -arg(metadatacopies_ARG, '\0', "metadatacopies", int_arg, 0) +arg(vgmetadatacopies_ARG, '\0', "vgmetadatacopies", metadatacopies_arg, 0) +arg(metadatacopies_ARG, '\0', "metadatacopies", metadatacopies_arg, 0) arg(metadatasize_ARG, '\0', "metadatasize", size_mb_arg, 0) arg(metadataignore_ARG, '\0', "metadataignore", yes_no_arg, 0) arg(restorefile_ARG, '\0', "restorefile", string_arg, 0) diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c index 9cc65efb..8ff74ac0 100644 --- a/tools/lvmcmdline.c +++ b/tools/lvmcmdline.c @@ -476,29 +476,22 @@ int readahead_arg(struct cmd_context *cmd __attribute((unused)), struct arg *a) /* * Non-zero, positive integer, "all", or "unmanaged" */ -int vgmetadatacopies_arg(struct cmd_context *cmd __attribute((unused)), +int metadatacopies_arg(struct cmd_context *cmd __attribute((unused)), struct arg *a) { - if (!strcasecmp(a->value, "all")) { - a->ui_value = VGMETADATACOPIES_ALL; - return 1; - } + if (!strncmp(cmd->command->name, "vg", 2)) { + if (!strcasecmp(a->value, "all")) { + a->ui_value = VGMETADATACOPIES_ALL; + return 1; + } - if (!strcasecmp(a->value, "unmanaged")) { - a->ui_value = VGMETADATACOPIES_UNMANAGED; - return 1; + if (!strcasecmp(a->value, "unmanaged")) { + a->ui_value = VGMETADATACOPIES_UNMANAGED; + return 1; + } } - if (!_size_arg(cmd, a, 1)) - return 0; - - if (a->sign == SIGN_MINUS) - return 0; - - if (!a->ui_value) - return 0; - - return 1; + return int_arg(cmd, a); } static void __alloc(int size) diff --git a/tools/tools.h b/tools/tools.h index a09fa8e8..2e06fc20 100644 --- a/tools/tools.h +++ b/tools/tools.h @@ -152,8 +152,7 @@ int units_arg(struct cmd_context *cmd, struct arg *a); int segtype_arg(struct cmd_context *cmd, struct arg *a); int alloc_arg(struct cmd_context *cmd, struct arg *a); int readahead_arg(struct cmd_context *cmd, struct arg *a); -int vgmetadatacopies_arg(struct cmd_context *cmd __attribute((unused)), - struct arg *a); +int metadatacopies_arg(struct cmd_context *cmd __attribute((unused)), struct arg *a); /* we use the enums to access the switches */ unsigned arg_count(const struct cmd_context *cmd, int a); |