mirror of
git://sourceware.org/git/lvm2.git
synced 2025-07-14 16:58:59 +03:00
config: consolidate CFG_UNSUPPORTED and CFG_ADVANCED settings
These settings are in the "unsupported" group: devices/loopfiles log/activate_file metadata/disk_areas (section) metadata/disk_areas/<disk_area> (section) metadata/disk_areas/<disk_area>/size metadata/disk_areas/<disk_area>/id These settings are in the "advanced" group: devices/dir devices/scan devices/types global/proc activation/missing_stripe_filler activation/mlock_filter metadata/pvmetadatacopies metadata/pvmetadataignore metadata/stripesize metadata/dirs Also, this patch causes the --ignoreunsupported and --ignoreadvanced switches to be honoured for all config types (lvmconfig --type). By default, the --type current and --type diff display unsupported settings, the other types ignore them - this patch also introduces --showunsupported switch for all these other types to display even unsupported settings in their output if needed.
This commit is contained in:
@ -1,5 +1,8 @@
|
||||
Version 2.02.119 -
|
||||
==================================
|
||||
Add --showunsupported to lvmconfig to also display unsupported settings.
|
||||
Display unsupported settings for lvmconfig --type current,diff only by default.
|
||||
Honour lvmconfig --ignoreunsupported and --ignoreadvanced for all --type.
|
||||
Make python bindings usable with python3 (and compatible with 2.6 & 2.7).
|
||||
Add lvmconfig -l|--list as shortcut for lvmconfig --type list --withsummary.
|
||||
Add lvmconfig --type list to display plain list of configuration settings.
|
||||
|
@ -826,6 +826,12 @@ static int _check_value_differs_from_default(struct cft_check_handle *handle,
|
||||
float f;
|
||||
const char *str;
|
||||
|
||||
if ((handle->ignoreunsupported && (def->flags & CFG_UNSUPPORTED)) ||
|
||||
(handle->ignoreadvanced && (def->flags & CFG_ADVANCED))) {
|
||||
diff = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* if default value is undefined, the value used differs from default */
|
||||
if (def->flags & CFG_DEFAULT_UNDEFINED) {
|
||||
diff = 1;
|
||||
@ -1598,7 +1604,7 @@ static int _out_prefix_fn(const struct dm_config_node *cn, const char *line, voi
|
||||
static int _out_line_fn(const struct dm_config_node *cn, const char *line, void *baton)
|
||||
{
|
||||
struct out_baton *out = baton;
|
||||
struct cfg_def_item *cfg_def = cfg_def_get_item_p(cn->id);
|
||||
struct cfg_def_item *cfg_def;
|
||||
char config_path[CFG_PATH_MAX_LEN];
|
||||
char summary[MAX_COMMENT_LINE+1];
|
||||
char version[9];
|
||||
@ -1608,6 +1614,8 @@ static int _out_line_fn(const struct dm_config_node *cn, const char *line, void
|
||||
(!(out->tree_spec->check_status[cn->id] & CFG_DIFF)))
|
||||
return 1;
|
||||
|
||||
cfg_def = cfg_def_get_item_p(cn->id);
|
||||
|
||||
if (out->tree_spec->type == CFG_DEF_TREE_LIST) {
|
||||
/* List view with node paths and summary. */
|
||||
if (cfg_def->type & CFG_TYPE_SECTION)
|
||||
|
@ -198,6 +198,8 @@ struct cft_check_handle {
|
||||
unsigned skip_if_checked:1; /* skip the check if already done before - return last state */
|
||||
unsigned suppress_messages:1; /* suppress messages during the check if config item is found invalid */
|
||||
unsigned check_diff:1; /* check if the value used differs from default one */
|
||||
unsigned ignoreadvanced:1; /* do not include advnced configs */
|
||||
unsigned ignoreunsupported:1; /* do not include unsupported configs */
|
||||
uint8_t status[CFG_COUNT]; /* flags for each configuration item - the result of the check */
|
||||
};
|
||||
|
||||
|
@ -39,7 +39,7 @@
|
||||
* CFG_NAME_VARIABLE - configuration node name is variable
|
||||
* CFG_ALLOW_EMPTY - node value can be emtpy
|
||||
* CFG_ADVANCED - this node belongs to advanced config set
|
||||
* CFG_UNSUPPORTED - this node belongs to unsupported config set
|
||||
* CFG_UNSUPPORTED - this node is not officially supported and it's used primarily by developers
|
||||
* CFG_PROFILABLE - this node is customizable by a profile
|
||||
* CFG_PROFILABLE_METADATA - profilable and attachable to VG/LV metadata
|
||||
* CFG_DEFAULT_UNDEFINED - node's default value is undefined
|
||||
@ -99,9 +99,9 @@ cfg_section(global_CFG_SECTION, "global", root_CFG_SECTION, CFG_PROFILABLE, vsn(
|
||||
"Miscellaneous global LVM settings.\n")
|
||||
|
||||
cfg_section(activation_CFG_SECTION, "activation", root_CFG_SECTION, CFG_PROFILABLE, vsn(1, 0, 0), NULL)
|
||||
cfg_section(metadata_CFG_SECTION, "metadata", root_CFG_SECTION, CFG_ADVANCED, vsn(1, 0, 0), NULL)
|
||||
cfg_section(metadata_CFG_SECTION, "metadata", root_CFG_SECTION, 0, vsn(1, 0, 0), NULL)
|
||||
|
||||
cfg_section(report_CFG_SECTION, "report", root_CFG_SECTION, CFG_ADVANCED | CFG_PROFILABLE, vsn(1, 0, 0),
|
||||
cfg_section(report_CFG_SECTION, "report", root_CFG_SECTION, CFG_PROFILABLE, vsn(1, 0, 0),
|
||||
"LVM report command output formatting.\n")
|
||||
|
||||
cfg_section(dmeventd_CFG_SECTION, "dmeventd", root_CFG_SECTION, 0, vsn(1, 2, 3),
|
||||
@ -127,14 +127,14 @@ cfg(config_abort_on_errors_CFG, "abort_on_errors", config_CFG_SECTION, 0, CFG_TY
|
||||
cfg_runtime(config_profile_dir_CFG, "profile_dir", config_CFG_SECTION, 0, CFG_TYPE_STRING, vsn(2, 2, 99),
|
||||
"Directory where LVM looks for configuration profiles.\n")
|
||||
|
||||
cfg(devices_dir_CFG, "dir", devices_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_DEV_DIR, vsn(1, 0, 0), NULL,
|
||||
cfg(devices_dir_CFG, "dir", devices_CFG_SECTION, CFG_ADVANCED, CFG_TYPE_STRING, DEFAULT_DEV_DIR, vsn(1, 0, 0), NULL,
|
||||
"Directory in which to create volume group device nodes.\n"
|
||||
"Commands also accept this as a prefix on volume group names.\n")
|
||||
|
||||
cfg_array(devices_scan_CFG, "scan", devices_CFG_SECTION, 0, CFG_TYPE_STRING, "#S/dev", vsn(1, 0, 0), NULL,
|
||||
cfg_array(devices_scan_CFG, "scan", devices_CFG_SECTION, CFG_ADVANCED, CFG_TYPE_STRING, "#S/dev", vsn(1, 0, 0), NULL,
|
||||
"Directories containing device nodes to use with LVM.\n")
|
||||
|
||||
cfg_array(devices_loopfiles_CFG, "loopfiles", devices_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(1, 2, 0), NULL, NULL)
|
||||
cfg_array(devices_loopfiles_CFG, "loopfiles", devices_CFG_SECTION, CFG_DEFAULT_UNDEFINED | CFG_UNSUPPORTED, CFG_TYPE_STRING, NULL, vsn(1, 2, 0), NULL, NULL)
|
||||
|
||||
cfg(devices_obtain_device_list_from_udev_CFG, "obtain_device_list_from_udev", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_OBTAIN_DEVICE_LIST_FROM_UDEV, vsn(2, 2, 85), NULL,
|
||||
"Obtain the list of available devices from udev.\n"
|
||||
@ -239,7 +239,7 @@ cfg(devices_cache_file_prefix_CFG, "cache_file_prefix", devices_CFG_SECTION, CFG
|
||||
cfg(devices_write_cache_state_CFG, "write_cache_state", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, 1, vsn(1, 0, 0), NULL,
|
||||
"Enable/disable writing the cache file. See devices/cache_dir.\n")
|
||||
|
||||
cfg_array(devices_types_CFG, "types", devices_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_INT | CFG_TYPE_STRING, NULL, vsn(1, 0, 0), NULL,
|
||||
cfg_array(devices_types_CFG, "types", devices_CFG_SECTION, CFG_DEFAULT_UNDEFINED | CFG_ADVANCED, CFG_TYPE_INT | CFG_TYPE_STRING, NULL, vsn(1, 0, 0), NULL,
|
||||
"List of additional acceptable block device types.\n"
|
||||
"These are of device type names from /proc/devices,\n"
|
||||
"followed by the maximum number of partitions.\n"
|
||||
@ -518,7 +518,7 @@ cfg(log_activation_CFG, "activation", log_CFG_SECTION, 0, CFG_TYPE_BOOL, 0, vsn(
|
||||
"Log messages during activation.\n"
|
||||
"Don't use this in low memory situations (can deadlock).\n")
|
||||
|
||||
cfg(log_activate_file_CFG, "activate_file", log_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(1, 0, 0), NULL, NULL)
|
||||
cfg(log_activate_file_CFG, "activate_file", log_CFG_SECTION, CFG_DEFAULT_UNDEFINED | CFG_UNSUPPORTED, CFG_TYPE_STRING, NULL, vsn(1, 0, 0), NULL, NULL)
|
||||
|
||||
cfg_array(log_debug_classes_CFG, "debug_classes", log_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, "#Smemory#Sdevices#Sactivation#Sallocation#Slvmetad#Smetadata#Scache#Slocking", vsn(2, 2, 99), NULL,
|
||||
"Select log messages by class.\n"
|
||||
@ -605,7 +605,7 @@ cfg_array(global_format_libraries_CFG, "format_libraries", global_CFG_SECTION, C
|
||||
|
||||
cfg_array(global_segment_libraries_CFG, "segment_libraries", global_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(1, 0, 18), NULL, NULL)
|
||||
|
||||
cfg(global_proc_CFG, "proc", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_PROC_DIR, vsn(1, 0, 0), NULL,
|
||||
cfg(global_proc_CFG, "proc", global_CFG_SECTION, CFG_ADVANCED, CFG_TYPE_STRING, DEFAULT_PROC_DIR, vsn(1, 0, 0), NULL,
|
||||
"Location of proc filesystem.\n")
|
||||
|
||||
cfg(global_etc_CFG, "etc", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_ETC_DIR, vsn(2, 2, 117), "@CONFDIR@",
|
||||
@ -926,7 +926,7 @@ cfg(activation_retry_deactivation_CFG, "retry_deactivation", activation_CFG_SECT
|
||||
"process run from a quick udev rule temporarily opened\n"
|
||||
"the device.\n")
|
||||
|
||||
cfg(activation_missing_stripe_filler_CFG, "missing_stripe_filler", activation_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_STRIPE_FILLER, vsn(1, 0, 0), NULL,
|
||||
cfg(activation_missing_stripe_filler_CFG, "missing_stripe_filler", activation_CFG_SECTION, CFG_ADVANCED, CFG_TYPE_STRING, DEFAULT_STRIPE_FILLER, vsn(1, 0, 0), NULL,
|
||||
"Method to fill missing stripes when activating an incomplete LV.\n"
|
||||
"Using 'error' will make inaccessible parts of the device return\n"
|
||||
"I/O errors on access. You can instead use a device path, in which\n"
|
||||
@ -1135,7 +1135,7 @@ cfg(activation_thin_pool_autoextend_percent_CFG, "thin_pool_autoextend_percent",
|
||||
"The amount of additional space added to a thin pool is this\n"
|
||||
"percent of its current size.\n")
|
||||
|
||||
cfg_array(activation_mlock_filter_CFG, "mlock_filter", activation_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(2, 2, 62), NULL,
|
||||
cfg_array(activation_mlock_filter_CFG, "mlock_filter", activation_CFG_SECTION, CFG_DEFAULT_UNDEFINED | CFG_ADVANCED, CFG_TYPE_STRING, NULL, vsn(2, 2, 62), NULL,
|
||||
"Do not mlock these memory areas.\n"
|
||||
"While activating devices, I/O to devices being\n"
|
||||
"(re)configured is suspended. As a precaution against\n"
|
||||
@ -1209,7 +1209,7 @@ cfg(metadata_pvmetadatacopies_CFG, "pvmetadatacopies", metadata_CFG_SECTION, CFG
|
||||
"be useful with VGs containing large numbers of PVs.\n"
|
||||
"The '--pvmetadatacopies' option overrides this setting.\n")
|
||||
|
||||
cfg(metadata_vgmetadatacopies_CFG, "vgmetadatacopies", metadata_CFG_SECTION, CFG_ADVANCED, CFG_TYPE_INT, DEFAULT_VGMETADATACOPIES, vsn(2, 2, 69), NULL,
|
||||
cfg(metadata_vgmetadatacopies_CFG, "vgmetadatacopies", metadata_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_VGMETADATACOPIES, vsn(2, 2, 69), NULL,
|
||||
"Number of copies of metadata to maintain for each VG.\n"
|
||||
"If set to a non-zero value, LVM automatically chooses which of\n"
|
||||
"the available metadata areas to use to achieve the requested\n"
|
||||
@ -1221,7 +1221,7 @@ cfg(metadata_vgmetadatacopies_CFG, "vgmetadatacopies", metadata_CFG_SECTION, CFG
|
||||
"the individual PV level using 'pvchange --metadataignore y|n'.\n"
|
||||
"The '--vgmetadatacopies' option overrides this setting.\n")
|
||||
|
||||
cfg(metadata_pvmetadatasize_CFG, "pvmetadatasize", metadata_CFG_SECTION, CFG_ADVANCED, CFG_TYPE_INT, DEFAULT_PVMETADATASIZE, vsn(1, 0, 0), NULL,
|
||||
cfg(metadata_pvmetadatasize_CFG, "pvmetadatasize", metadata_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_PVMETADATASIZE, vsn(1, 0, 0), NULL,
|
||||
"Approximate number of sectors to use for each metadata copy.\n"
|
||||
"VGs with large numbers of PVs or LVs, or VGs containing\n"
|
||||
"complex LV structures, may need additional space for VG\n"
|
||||
@ -1252,11 +1252,11 @@ cfg_array(metadata_dirs_CFG, "dirs", metadata_CFG_SECTION, CFG_ADVANCED | CFG_DE
|
||||
"Example:\n"
|
||||
"dirs = [ \"/etc/lvm/metadata\", \"/mnt/disk2/lvm/metadata2\" ]\n")
|
||||
|
||||
cfg_section(metadata_disk_areas_CFG_SUBSECTION, "disk_areas", metadata_CFG_SECTION, CFG_ADVANCED | CFG_UNSUPPORTED | CFG_DEFAULT_UNDEFINED, vsn(1, 0, 0), NULL)
|
||||
cfg_section(disk_area_CFG_SUBSECTION, "disk_area", metadata_disk_areas_CFG_SUBSECTION, CFG_NAME_VARIABLE | CFG_ADVANCED | CFG_UNSUPPORTED | CFG_DEFAULT_UNDEFINED, vsn(1, 0, 0), NULL)
|
||||
cfg(disk_area_start_sector_CFG, "start_sector", disk_area_CFG_SUBSECTION, CFG_ADVANCED | CFG_UNSUPPORTED | CFG_DEFAULT_UNDEFINED, CFG_TYPE_INT, 0, vsn(1, 0, 0), NULL, NULL)
|
||||
cfg(disk_area_size_CFG, "size", disk_area_CFG_SUBSECTION, CFG_ADVANCED | CFG_UNSUPPORTED | CFG_DEFAULT_UNDEFINED, CFG_TYPE_INT, 0, vsn(1, 0, 0), NULL, NULL)
|
||||
cfg(disk_area_id_CFG, "id", disk_area_CFG_SUBSECTION, CFG_ADVANCED | CFG_UNSUPPORTED | CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(1, 0, 0), NULL, NULL)
|
||||
cfg_section(metadata_disk_areas_CFG_SUBSECTION, "disk_areas", metadata_CFG_SECTION, CFG_UNSUPPORTED | CFG_DEFAULT_UNDEFINED, vsn(1, 0, 0), NULL)
|
||||
cfg_section(disk_area_CFG_SUBSECTION, "disk_area", metadata_disk_areas_CFG_SUBSECTION, CFG_NAME_VARIABLE | CFG_UNSUPPORTED | CFG_DEFAULT_UNDEFINED, vsn(1, 0, 0), NULL)
|
||||
cfg(disk_area_start_sector_CFG, "start_sector", disk_area_CFG_SUBSECTION, CFG_UNSUPPORTED | CFG_DEFAULT_UNDEFINED, CFG_TYPE_INT, 0, vsn(1, 0, 0), NULL, NULL)
|
||||
cfg(disk_area_size_CFG, "size", disk_area_CFG_SUBSECTION, CFG_UNSUPPORTED | CFG_DEFAULT_UNDEFINED, CFG_TYPE_INT, 0, vsn(1, 0, 0), NULL, NULL)
|
||||
cfg(disk_area_id_CFG, "id", disk_area_CFG_SUBSECTION, CFG_UNSUPPORTED | CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(1, 0, 0), NULL, NULL)
|
||||
|
||||
cfg(report_compact_output_CFG, "compact_output", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_BOOL, DEFAULT_REP_COMPACT_OUTPUT, vsn(2, 2, 115), NULL,
|
||||
"Do not print empty report fields.\n"
|
||||
|
@ -22,6 +22,7 @@ lvmconfig, lvm dumpconfig, lvm config \(em Display LVM configuration
|
||||
.RB [ \-\-metadataprofile
|
||||
.IR ProfileName ]
|
||||
.RB [ \-\-mergedconfig ]
|
||||
.RB [ \-\-showunsupported ]
|
||||
.RB [ \-\-validate ]
|
||||
.RB [ \-\-withsummary ]
|
||||
.RB [ \-\-withcomments ]
|
||||
@ -103,8 +104,10 @@ Exclude advanced configuration settings from the output.
|
||||
.TP
|
||||
.B \-\-ignoreunsupported
|
||||
Exclude unsupported configuration settings from the output. These settings are
|
||||
either used for debugging purposes only or their support is not yet
|
||||
complete and they are not meant to be used in production.
|
||||
either used for debugging and development purposes only or their support is not
|
||||
yet complete and they are not meant to be used in production. The \fBcurrent\fP
|
||||
and \fBdiff\fP types include unsupported settings in their output by default,
|
||||
all the other types ignore unsupported settings.
|
||||
|
||||
.TP
|
||||
.B \-\-ignorelocal
|
||||
@ -146,6 +149,14 @@ Without the \fB\-\-mergeconfig\fP option used, only the configuration at
|
||||
the front of the cascade is displayed. See also \fBlvm.conf\fP(5) for more
|
||||
info about \fBconfig cascade\fP.
|
||||
|
||||
.TP
|
||||
.B \-\-showunsupported
|
||||
Include unsupported configuration settings to the output. These settings
|
||||
are either used for debugging or development purposes only or their support
|
||||
is not yet complete and they are not meant to be used in production. The
|
||||
\fBcurrent\fP and \fBdiff\fP types include unsupported settings in their
|
||||
output by default, all the other types ignore unsupported settings.
|
||||
|
||||
.TP
|
||||
.B \-\-validate
|
||||
Validate current configuration used and exit with appropriate
|
||||
|
@ -98,6 +98,7 @@ arg(split_ARG, '\0', "split", NULL, 0)
|
||||
arg(splitcache_ARG, '\0', "splitcache", NULL, 0)
|
||||
arg(splitmirrors_ARG, '\0', "splitmirrors", int_arg, 0)
|
||||
arg(splitsnapshot_ARG, '\0', "splitsnapshot", NULL, 0)
|
||||
arg(showunsupported_ARG, '\0', "showunsupported", NULL, 0)
|
||||
arg(stripes_long_ARG, '\0', "stripes", int_arg, 0)
|
||||
arg(syncaction_ARG, '\0', "syncaction", string_arg, 0) /* FIXME Use custom validation fn */
|
||||
arg(sysinit_ARG, '\0', "sysinit", NULL, 0)
|
||||
|
@ -44,6 +44,7 @@ xx(config,
|
||||
"\t[--profile ProfileName]\n"
|
||||
"\t[--metadataprofile ProfileName]\n"
|
||||
"\t[--mergedconfig]\n"
|
||||
"\t[--showunsupported]\n"
|
||||
"\t[--validate]\n"
|
||||
"\t[--withsummary]\n"
|
||||
"\t[--withcomments]\n"
|
||||
@ -52,7 +53,8 @@ xx(config,
|
||||
"\t[ConfigurationNode...]\n",
|
||||
atversion_ARG, configtype_ARG, file_ARG, ignoreadvanced_ARG,
|
||||
ignoreunsupported_ARG, ignorelocal_ARG, list_ARG, mergedconfig_ARG, metadataprofile_ARG,
|
||||
validate_ARG, withsummary_ARG, withcomments_ARG, unconfigured_ARG, withversions_ARG)
|
||||
showunsupported_ARG, validate_ARG, withsummary_ARG, withcomments_ARG, unconfigured_ARG,
|
||||
withversions_ARG)
|
||||
|
||||
xx(devtypes,
|
||||
"Display recognised built-in block device types",
|
||||
@ -96,6 +98,7 @@ xx(dumpconfig,
|
||||
"\t[--profile ProfileName]\n"
|
||||
"\t[--metadataprofile ProfileName]\n"
|
||||
"\t[--mergedconfig]\n"
|
||||
"\t[--showunsupported]\n"
|
||||
"\t[--validate]\n"
|
||||
"\t[--withsummary]\n"
|
||||
"\t[--withcomments]\n"
|
||||
@ -104,7 +107,8 @@ xx(dumpconfig,
|
||||
"\t[ConfigurationNode...]\n",
|
||||
atversion_ARG, configtype_ARG, file_ARG, ignoreadvanced_ARG,
|
||||
ignoreunsupported_ARG, ignorelocal_ARG, list_ARG, mergedconfig_ARG, metadataprofile_ARG,
|
||||
validate_ARG, withsummary_ARG, withcomments_ARG, unconfigured_ARG, withversions_ARG)
|
||||
showunsupported_ARG, validate_ARG, withsummary_ARG, withcomments_ARG, unconfigured_ARG,
|
||||
withversions_ARG)
|
||||
|
||||
xx(formats,
|
||||
"List available metadata formats",
|
||||
@ -497,6 +501,7 @@ xx(lvmconfig,
|
||||
"\t[--profile ProfileName]\n"
|
||||
"\t[--metadataprofile ProfileName]\n"
|
||||
"\t[--mergedconfig]\n"
|
||||
"\t[--showunsupported]\n"
|
||||
"\t[--validate]\n"
|
||||
"\t[--withsummary]\n"
|
||||
"\t[--withcomments]\n"
|
||||
@ -505,7 +510,8 @@ xx(lvmconfig,
|
||||
"\t[ConfigurationNode...]\n",
|
||||
atversion_ARG, configtype_ARG, file_ARG, ignoreadvanced_ARG,
|
||||
ignoreunsupported_ARG, ignorelocal_ARG, list_ARG, mergedconfig_ARG, metadataprofile_ARG,
|
||||
validate_ARG, withsummary_ARG, withcomments_ARG, unconfigured_ARG, withversions_ARG)
|
||||
showunsupported_ARG, validate_ARG, withsummary_ARG, withcomments_ARG, unconfigured_ARG,
|
||||
withversions_ARG)
|
||||
|
||||
xx(lvmdiskscan,
|
||||
"List devices that may be used as physical volumes",
|
||||
|
@ -50,6 +50,9 @@ static int _do_def_check(struct config_def_tree_spec *spec,
|
||||
handle->check_diff = 0;
|
||||
}
|
||||
|
||||
handle->ignoreunsupported = spec->ignoreunsupported;
|
||||
handle->ignoreadvanced = spec->ignoreadvanced;
|
||||
|
||||
config_def_check(handle);
|
||||
*cft_check_handle = handle;
|
||||
|
||||
@ -116,8 +119,22 @@ int dumpconfig(struct cmd_context *cmd, int argc, char **argv)
|
||||
if (arg_count(cmd, ignoreadvanced_ARG))
|
||||
tree_spec.ignoreadvanced = 1;
|
||||
|
||||
if (arg_count(cmd, ignoreunsupported_ARG))
|
||||
if (arg_count(cmd, ignoreunsupported_ARG)) {
|
||||
if (arg_count(cmd, showunsupported_ARG)) {
|
||||
log_error("Only one of --ignoreunsupported and --showunsupported permitted.");
|
||||
return EINVALID_CMD_LINE;
|
||||
}
|
||||
tree_spec.ignoreunsupported = 1;
|
||||
} else if (arg_count(cmd, showunsupported_ARG)) {
|
||||
tree_spec.ignoreunsupported = 0;
|
||||
} else if (strcmp(type, "current") && strcmp(type, "diff")) {
|
||||
/*
|
||||
* By default hide unsupported settings
|
||||
* for all display types except "current"
|
||||
* and "diff".
|
||||
*/
|
||||
tree_spec.ignoreunsupported = 1;
|
||||
}
|
||||
|
||||
if (arg_count(cmd, ignorelocal_ARG))
|
||||
tree_spec.ignorelocal = 1;
|
||||
@ -128,7 +145,9 @@ int dumpconfig(struct cmd_context *cmd, int argc, char **argv)
|
||||
return EINVALID_CMD_LINE;
|
||||
}
|
||||
|
||||
if ((tree_spec.ignoreadvanced || tree_spec.ignoreunsupported)) {
|
||||
if (arg_count(cmd, ignoreunsupported_ARG) ||
|
||||
arg_count(cmd, ignoreadvanced_ARG)) {
|
||||
/* FIXME: allow these even for --type current */
|
||||
log_error("--ignoreadvanced and --ignoreunsupported has "
|
||||
"no effect with --type current");
|
||||
return EINVALID_CMD_LINE;
|
||||
|
Reference in New Issue
Block a user