1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-03-28 02:50:41 +03:00

config: create lists of accepted values in descriptions

This commit is contained in:
David Teigland 2015-08-13 15:31:29 -05:00
parent b091c37595
commit dece918bc8

View File

@ -199,10 +199,14 @@ cfg(devices_external_device_info_source_CFG, "external_device_info_source", devi
"this information. For example, this information is used to\n"
"drive LVM filtering like MD component detection, multipath\n"
"component detection, partition detection and others.\n"
"Possible options are: none, udev.\n"
"none - No external device information source is used.\n"
"udev - Reuse existing udev database records. Applicable\n"
"only if LVM is compiled with udev support.\n")
"#\n"
"Accepted values:\n"
" none\n"
" No external device information source is used.\n"
" udev\n"
" Reuse existing udev database records. Applicable only if LVM is\n"
" compiled with udev support.\n"
"#\n")
cfg_array(devices_preferred_names_CFG, "preferred_names", devices_CFG_SECTION, CFG_ALLOW_EMPTY | CFG_DEFAULT_UNDEFINED , CFG_TYPE_STRING, NULL, vsn(1, 2, 19), NULL, 0, NULL,
"Select which path name to display for a block device.\n"
@ -471,11 +475,14 @@ cfg(allocation_cache_pool_cachemode_CFG, "cache_pool_cachemode", allocation_CFG_
cfg(allocation_cache_mode_CFG, "cache_mode", allocation_CFG_SECTION, CFG_PROFILABLE | CFG_DEFAULT_COMMENTED, CFG_TYPE_STRING, DEFAULT_CACHE_MODE, vsn(2, 2, 128), NULL, 0, NULL,
"The default cache mode used for new cache.\n"
"Possible options are: writethrough, writeback.\n"
"writethrough - Data blocks are immediately written from\n"
"the cache to disk.\n"
"writeback - Data blocks are written from the cache back\n"
"to disk after some delay to improve performance.\n"
"#\n"
"Accepted values:\n"
" writethrough\n"
" Data blocks are immediately written from the cache to disk.\n"
" writeback\n"
" Data blocks are written from the cache back to disk after some\n"
" delay to improve performance.\n"
"#\n"
"This setting replaces allocation/cache_pool_cachemode.\n")
cfg(allocation_cache_policy_CFG, "cache_policy", allocation_CFG_SECTION, CFG_PROFILABLE | CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, 0, vsn(2, 2, 128), NULL, 0, NULL,
@ -513,19 +520,28 @@ cfg(allocation_thin_pool_zero_CFG, "thin_pool_zero", allocation_CFG_SECTION, CFG
cfg(allocation_thin_pool_discards_CFG, "thin_pool_discards", allocation_CFG_SECTION, CFG_PROFILABLE | CFG_PROFILABLE_METADATA | CFG_DEFAULT_COMMENTED, CFG_TYPE_STRING, DEFAULT_THIN_POOL_DISCARDS, vsn(2, 2, 99), NULL, 0, NULL,
"The discards behaviour of thin pool volumes.\n"
"Possible options are: ignore, nopassdown, passdown.\n")
"#\n"
"Accepted values:\n"
" ignore\n"
" nopassdown\n"
" passdown\n"
"#\n")
cfg(allocation_thin_pool_chunk_size_policy_CFG, "thin_pool_chunk_size_policy", allocation_CFG_SECTION, CFG_PROFILABLE | CFG_PROFILABLE_METADATA | CFG_DEFAULT_COMMENTED, CFG_TYPE_STRING, DEFAULT_THIN_POOL_CHUNK_SIZE_POLICY, vsn(2, 2, 101), NULL, 0, NULL,
"The chunk size calculation policy for thin pool volumes.\n"
"Possible options are: generic, performance.\n"
"generic - If thin_pool_chunk_size is defined, use it.\n"
"Otherwise, calculate the chunk size based on estimation and\n"
"device hints exposed in sysfs - the minimum_io_size.\n"
"The chunk size is always at least 64KiB.\n"
"performance - If thin_pool_chunk_size is defined, use it.\n"
"Otherwise, calculate the chunk size for performance based on\n"
"device hints exposed in sysfs - the optimal_io_size.\n"
"The chunk size is always at least 512KiB.\n")
"#\n"
"Accepted values:\n"
" generic\n"
" If thin_pool_chunk_size is defined, use it. Otherwise, calculate\n"
" the chunk size based on estimation and device hints exposed in\n"
" sysfs - the minimum_io_size. The chunk size is always at least\n"
" 64KiB.\n"
" performance\n"
" If thin_pool_chunk_size is defined, use it. Otherwise, calculate\n"
" the chunk size for performance based on device hints exposed in\n"
" sysfs - the optimal_io_size. The chunk size is always at least\n"
" 512KiB.\n"
"#\n")
cfg_runtime(allocation_thin_pool_chunk_size_CFG, "thin_pool_chunk_size", allocation_CFG_SECTION, CFG_PROFILABLE | CFG_PROFILABLE_METADATA | CFG_DEFAULT_UNDEFINED, CFG_TYPE_INT, vsn(2, 2, 99), 0, NULL,
"The minimal chunk size in KiB for thin pool volumes.\n"
@ -679,24 +695,33 @@ cfg(global_etc_CFG, "etc", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_ETC_D
cfg(global_locking_type_CFG, "locking_type", global_CFG_SECTION, 0, CFG_TYPE_INT, 1, vsn(1, 0, 0), NULL, 0, NULL,
"Type of locking to use.\n"
"Type 0: turns off locking. Warning: this risks metadata\n"
"corruption if commands run concurrently.\n"
"Type 1: uses local file-based locking, the standard mode.\n"
"Type 2: uses the external shared library locking_library.\n"
"Type 3: uses built-in clustered locking with clvmd.\n"
"This is incompatible with lvmetad. If use_lvmetad is enabled,\n"
"lvm prints a warning and disables lvmetad use.\n"
"Type 4: uses read-only locking which forbids any operations\n"
"that might change metadata.\n"
"Type 5: offers dummy locking for tools that do not need any locks.\n"
"You should not need to set this directly; the tools will select\n"
"when to use it instead of the configured locking_type.\n"
"Do not use lvmetad or the kernel device-mapper driver with this\n"
"locking type. It is used by the --readonly option that offers\n"
"read-only access to Volume Group metadata that cannot be locked\n"
"safely because it belongs to an inaccessible domain and might be\n"
"in use, for example a virtual machine image or a disk that is\n"
"shared by a clustered machine.\n")
"#\n"
"Accepted values:\n"
" 0\n"
" Turns off locking. Warning: this risks metadata corruption if\n"
" commands run concurrently.\n"
" 1\n"
" LVM uses local file-based locking, the standard mode.\n"
" 2\n"
" LVM uses the external shared library locking_library.\n"
" 3\n"
" LVM uses built-in clustered locking with clvmd.\n"
" This is incompatible with lvmetad. If use_lvmetad is enabled,\n"
" LVM prints a warning and disables lvmetad use.\n"
" 4\n"
" LVM uses read-only locking which forbids any operations that\n"
" might change metadata.\n"
" 5\n"
" Offers dummy locking for tools that do not need any locks.\n"
" You should not need to set this directly; the tools will select\n"
" when to use it instead of the configured locking_type.\n"
" Do not use lvmetad or the kernel device-mapper driver with this\n"
" locking type. It is used by the --readonly option that offers\n"
" read-only access to Volume Group metadata that cannot be locked\n"
" safely because it belongs to an inaccessible domain and might be\n"
" in use, for example a virtual machine image or a disk that is\n"
" shared by a clustered machine.\n"
"#\n")
cfg(global_wait_for_locks_CFG, "wait_for_locks", global_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_WAIT_FOR_LOCKS, vsn(2, 2, 50), NULL, 0, NULL,
"When disabled, fail if a lock request would block.\n")
@ -763,55 +788,65 @@ cfg(global_metadata_read_only_CFG, "metadata_read_only", global_CFG_SECTION, 0,
cfg(global_mirror_segtype_default_CFG, "mirror_segtype_default", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_MIRROR_SEGTYPE, vsn(2, 2, 87), "@DEFAULT_MIRROR_SEGTYPE@", 0, NULL,
"The segment type used by the short mirroring option -m.\n"
"Possible options are: mirror, raid1.\n"
"mirror - the original RAID1 implementation from LVM/DM.\n"
"It is characterized by a flexible log solution (core,\n"
"disk, mirrored), and by the necessity to block I/O while\n"
"handling a failure.\n"
"There is an inherent race in the dmeventd failure\n"
"handling logic with snapshots of devices using this\n"
"type of RAID1 that in the worst case could cause a\n"
"deadlock. (Also see devices/ignore_lvm_mirrors.)\n"
"raid1 - a newer RAID1 implementation using the MD RAID1\n"
"personality through device-mapper. It is characterized\n"
"by a lack of log options. (A log is always allocated for\n"
"every device and they are placed on the same device as the\n"
"image - no separate devices are required.) This mirror\n"
"implementation does not require I/O to be blocked while\n"
"handling a failure. This mirror implementation is not\n"
"cluster-aware and cannot be used in a shared (active/active)\n"
"fashion in a cluster.\n"
"The '--type mirror|raid1' option overrides this setting.\n")
"The --type mirror|raid1 option overrides this setting.\n"
"#\n"
"Accepted values:\n"
" mirror\n"
" The original RAID1 implementation from LVM/DM. It is\n"
" characterized by a flexible log solution (core, disk, mirrored),\n"
" and by the necessity to block I/O while handling a failure.\n"
" There is an inherent race in the dmeventd failure handling logic\n"
" with snapshots of devices using this type of RAID1 that in the\n"
" worst case could cause a deadlock. (Also see\n"
" devices/ignore_lvm_mirrors.)\n"
" raid1\n"
" This is a newer RAID1 implementation using the MD RAID1\n"
" personality through device-mapper. It is characterized by a\n"
" lack of log options. (A log is always allocated for every\n"
" device and they are placed on the same device as the image,\n"
" so no separate devices are required.) This mirror\n"
" implementation does not require I/O to be blocked while\n"
" handling a failure. This mirror implementation is not\n"
" cluster-aware and cannot be used in a shared (active/active)\n"
" fashion in a cluster.\n"
"#\n")
cfg(global_raid10_segtype_default_CFG, "raid10_segtype_default", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_RAID10_SEGTYPE, vsn(2, 2, 99), "@DEFAULT_RAID10_SEGTYPE@", 0, NULL,
"The segment type used by the -i -m combination.\n"
"The --stripes/-i and --mirrors/-m options can both\n"
"be specified during the creation of a logical volume\n"
"to use both striping and mirroring for the LV.\n"
"There are two different implementations.\n"
"Possible options are: raid10, mirror.\n"
"raid10 - LVM uses MD's RAID10 personality through DM.\n"
"mirror - LVM layers the 'mirror' and 'stripe' segment types.\n"
"The layering is done by creating a mirror LV on top of\n"
"striped sub-LVs, effectively creating a RAID 0+1 array.\n"
"The layering is suboptimal in terms of providing redundancy\n"
"and performance. The 'raid10' option is perferred.\n"
"The '--type raid10|mirror' option overrides this setting.\n")
"The --stripes/-i and --mirrors/-m options can both be specified\n"
"during the creation of a logical volume to use both striping and\n"
"mirroring for the LV. There are two different implementations.\n"
"The --type raid10|mirror option overrides this setting.\n"
"#\n"
"Accepted values:\n"
" raid10\n"
" LVM uses MD's RAID10 personality through DM. This is the\n"
" preferred option.\n"
" mirror\n"
" LVM layers the 'mirror' and 'stripe' segment types. The layering\n"
" is done by creating a mirror LV on top of striped sub-LVs,\n"
" effectively creating a RAID 0+1 array. The layering is suboptimal\n"
" in terms of providing redundancy and performance.\n"
"#\n")
cfg(global_sparse_segtype_default_CFG, "sparse_segtype_default", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_SPARSE_SEGTYPE, vsn(2, 2, 112), "@DEFAULT_SPARSE_SEGTYPE@", 0, NULL,
"The segment type used by the -V -L combination.\n"
"The combination of -V and -L options creates a\n"
"sparse LV. There are two different implementations.\n"
"Possible options are: snapshot, thin.\n"
"snapshot - The original snapshot implementation from LVM/DM.\n"
"It uses an old snapshot that mixes data and metadata within\n"
"a single COW storage volume and performs poorly when the\n"
"size of stored data passes hundreds of MB.\n"
"thin - A newer implementation that uses thin provisioning.\n"
"It has a bigger minimal chunk size (64KiB) and uses a separate\n"
"volume for metadata. It has better performance, especially\n"
"when more data is used. It also supports full snapshots.\n"
"The '--type snapshot|thin' option overrides this setting.\n")
"The combination of -V and -L options creates a sparse LV. There are\n"
"two different implementations.\n"
"The --type snapshot|thin option overrides this setting.\n"
"#\n"
"Accepted values:\n"
" snapshot\n"
" The original snapshot implementation from LVM/DM. It uses an old\n"
" snapshot that mixes data and metadata within a single COW\n"
" storage volume and performs poorly when the size of stored data\n"
" passes hundreds of MB.\n"
" thin\n"
" A newer implementation that uses thin provisioning. It has a\n"
" bigger minimal chunk size (64KiB) and uses a separate volume for\n"
" metadata. It has better performance, especially when more data\n"
" is used. It also supports full snapshots.\n"
"#\n")
cfg(global_lvdisplay_shows_full_device_path_CFG, "lvdisplay_shows_full_device_path", global_CFG_SECTION, CFG_PROFILABLE | CFG_DEFAULT_COMMENTED, CFG_TYPE_BOOL, DEFAULT_LVDISPLAY_SHOWS_FULL_DEVICE_PATH, vsn(2, 2, 89), NULL, 0, NULL,
"Enable this to reinstate the previous lvdisplay name format.\n"
@ -959,23 +994,28 @@ cfg_array(global_cache_repair_options_CFG, "cache_repair_options", global_CFG_SE
cfg(global_system_id_source_CFG, "system_id_source", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_SYSTEM_ID_SOURCE, vsn(2, 2, 117), NULL, 0, NULL,
"The method LVM uses to set the local system ID.\n"
"Volume Groups can also be given a system ID (by\n"
"vgcreate, vgchange, or vgimport.)\n"
"A VG on shared storage devices is accessible only\n"
"to the host with a matching system ID.\n"
"See 'man lvmsystemid' for information on limitations\n"
"and correct usage.\n"
"Possible options are: none, lvmlocal, uname, machineid, file.\n"
"none - The host has no system ID.\n"
"lvmlocal - Obtain the system ID from the system_id setting in the\n"
"'local' section of an lvm configuration file, e.g. lvmlocal.conf.\n"
"uname - Set the system ID from the hostname (uname) of the system.\n"
"System IDs beginning localhost are not permitted.\n"
"machineid - Use the contents of the machine-id file to set the\n"
"system ID. Some systems create this file at installation time.\n"
"See 'man machine-id' and global/etc.\n"
"file - Use the contents of another file (system_id_file) to set\n"
"the system ID.\n")
"Volume Groups can also be given a system ID (by vgcreate, vgchange,\n"
"or vgimport.) A VG on shared storage devices is accessible only to\n"
"the host with a matching system ID. See 'man lvmsystemid' for\n"
"information on limitations and correct usage.\n"
"#\n"
"Accepted values:\n"
" none\n"
" The host has no system ID.\n"
" lvmlocal\n"
" Obtain the system ID from the system_id setting in the 'local'\n"
" section of an lvm configuration file, e.g. lvmlocal.conf.\n"
" uname\n"
" Set the system ID from the hostname (uname) of the system.\n"
" System IDs beginning localhost are not permitted.\n"
" machineid\n"
" Use the contents of the machine-id file to set the system ID.\n"
" Some systems create this file at installation time.\n"
" See 'man machine-id' and global/etc.\n"
" file\n"
" Use the contents of another file (system_id_file) to set the\n"
" system ID.\n"
"#\n")
cfg(global_system_id_file_CFG, "system_id_file", global_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(2, 2, 117), NULL, 0, NULL,
"The full path to the file containing a system ID.\n"
@ -1061,18 +1101,23 @@ cfg(activation_process_priority_CFG, "process_priority", activation_CFG_SECTION,
cfg_array(activation_volume_list_CFG, "volume_list", activation_CFG_SECTION, CFG_ALLOW_EMPTY | CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(1, 0, 18), NULL, 0, NULL,
"Only LVs selected by this list are activated.\n"
"If this list is defined, an LV is only activated\n"
"if it matches an entry in this list.\n"
"If this list is undefined, it imposes no limits\n"
"If this list is defined, an LV is only activated if it matches an\n"
"entry in this list. If this list is undefined, it imposes no limits\n"
"on LV activation (all are allowed).\n"
"Possible options are: vgname, vgname/lvname, @tag, @*\n"
"vgname is matched exactly and selects all LVs in the VG.\n"
"vgname/lvname is matched exactly and selects the LV.\n"
"@tag selects if tag matches a tag set on the LV or VG.\n"
"@* selects if a tag defined on the host is also set on\n"
"the LV or VG. See tags/hosttags.\n"
"If any host tags exist but volume_list is not defined,\n"
"a default single-entry list containing '@*' is assumed.\n"
"#\n"
"Accepted values:\n"
" vgname\n"
" The VG name is matched exactly and selects all LVs in the VG.\n"
" vgname/lvname\n"
" The VG name and LV name are matched exactly and selects the LV.\n"
" @tag\n"
" Selects an LV if the specified tag matches a tag set on the LV\n"
" or VG.\n"
" @*\n"
" Selects an LV if a tag defined on the host is also set on the LV\n"
" or VG. See tags/hosttags. If any host tags exist but volume_list\n"
" is not defined, a default single-entry list containing '@*' is\n"
" assumed.\n"
"#\n"
"Example\n"
"volume_list = [ \"vg1\", \"vg2/lvol1\", \"@tag1\", \"@*\" ]\n"
@ -1080,43 +1125,64 @@ cfg_array(activation_volume_list_CFG, "volume_list", activation_CFG_SECTION, CFG
cfg_array(activation_auto_activation_volume_list_CFG, "auto_activation_volume_list", activation_CFG_SECTION, CFG_ALLOW_EMPTY | CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(2, 2, 97), NULL, 0, NULL,
"Only LVs selected by this list are auto-activated.\n"
"This list works like volume_list, but it is used\n"
"only by auto-activation commands. It does not apply\n"
"to direct activation commands.\n"
"If this list is defined, an LV is only auto-activated\n"
"if it matches an entry in this list.\n"
"If this list is undefined, it imposes no limits\n"
"on LV auto-activation (all are allowed.)\n"
"If this list is defined and empty, i.e. \"[]\",\n"
"then no LVs are selected for auto-activation.\n"
"An LV that is selected by this list for\n"
"auto-activation, must also be selected by\n"
"volume_list (if defined) before it is activated.\n"
"Auto-activation is an activation command that\n"
"includes the 'a' argument: --activate ay or -a ay,\n"
"e.g. vgchange -a ay, or lvchange -a ay vgname/lvname.\n"
"The 'a' (auto) argument for auto-activation is\n"
"meant to be used by activation commands that are\n"
"run automatically by the system, as opposed to\n"
"LVM commands run directly by a user. A user may\n"
"also use the 'a' flag directly to perform auto-\n"
"activation.\n"
"An example of a system-generated auto-activation\n"
"command is 'pvscan --cache -aay' which is generated\n"
"when udev and lvmetad detect a new VG has appeared\n"
"on the system, and want LVs in it to be auto-activated.\n"
"Possible options are: vgname, vgname/lvname, @tag, @*\n"
"See volume_list for how these options are matched to LVs.\n")
"This list works like volume_list, but it is used only by\n"
"auto-activation commands. It does not apply to direct activation\n"
"commands. If this list is defined, an LV is only auto-activated\n"
"if it matches an entry in this list. If this list is undefined, it\n"
"imposes no limits on LV auto-activation (all are allowed.) If this\n"
"list is defined and empty, i.e. \"[]\", then no LVs are selected for\n"
"auto-activation. An LV that is selected by this list for\n"
"auto-activation, must also be selected by volume_list (if defined)\n"
"before it is activated. Auto-activation is an activation command that\n"
"includes the 'a' argument: --activate ay or -a ay. The 'a' (auto)\n"
"argument for auto-activation is meant to be used by activation\n"
"commands that are run automatically by the system, as opposed to LVM\n"
"commands run directly by a user. A user may also use the 'a' flag\n"
"directly to perform auto-activation. Also see pvscan(8) for more\n"
"information about auto-activation.\n"
"#\n"
"Accepted values:\n"
" vgname\n"
" The VG name is matched exactly and selects all LVs in the VG.\n"
" vgname/lvname\n"
" The VG name and LV name are matched exactly and selects the LV.\n"
" @tag\n"
" Selects an LV if the specified tag matches a tag set on the LV\n"
" or VG.\n"
" @*\n"
" Selects an LV if a tag defined on the host is also set on the LV\n"
" or VG. See tags/hosttags. If any host tags exist but volume_list\n"
" is not defined, a default single-entry list containing '@*' is\n"
" assumed.\n"
"#\n"
"Example\n"
"volume_list = [ \"vg1\", \"vg2/lvol1\", \"@tag1\", \"@*\" ]\n"
"#\n")
cfg_array(activation_read_only_volume_list_CFG, "read_only_volume_list", activation_CFG_SECTION, CFG_ALLOW_EMPTY | CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(2, 2, 89), NULL, 0, NULL,
"LVs in this list are activated in read-only mode.\n"
"If this list is defined, each LV that is to be activated\n"
"is checked against this list, and if it matches, it is\n"
"activated in read-only mode.\n"
"This overrides the permission setting stored in the\n"
"metadata, e.g. from --permission rw.\n"
"Possible options are: vgname, vgname/lvname, @tag, @*\n"
"See volume_list for how these options are matched to LVs.\n")
"If this list is defined, each LV that is to be activated is checked\n"
"against this list, and if it matches, it is activated in read-only\n"
"mode. This overrides the permission setting stored in the metadata,\n"
"e.g. from --permission rw.\n"
"#\n"
"Accepted values:\n"
" vgname\n"
" The VG name is matched exactly and selects all LVs in the VG.\n"
" vgname/lvname\n"
" The VG name and LV name are matched exactly and selects the LV.\n"
" @tag\n"
" Selects an LV if the specified tag matches a tag set on the LV\n"
" or VG.\n"
" @*\n"
" Selects an LV if a tag defined on the host is also set on the LV\n"
" or VG. See tags/hosttags. If any host tags exist but volume_list\n"
" is not defined, a default single-entry list containing '@*' is\n"
" assumed.\n"
"#\n"
"Example\n"
"volume_list = [ \"vg1\", \"vg2/lvol1\", \"@tag1\", \"@*\" ]\n"
"#\n")
cfg(activation_mirror_region_size_CFG, "mirror_region_size", activation_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_RAID_REGION_SIZE, vsn(1, 0, 0), NULL, vsn(2, 2, 99),
"This has been replaced by the activation/raid_region_size setting.\n",
@ -1140,62 +1206,70 @@ cfg(activation_error_when_full_CFG, "error_when_full", activation_CFG_SECTION, C
cfg(activation_readahead_CFG, "readahead", activation_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_READ_AHEAD, vsn(1, 0, 23), NULL, 0, NULL,
"Setting to use when there is no readahead setting in metadata.\n"
"Possible options are: none, auto.\n"
"none - Disable readahead.\n"
"auto - Use default value chosen by kernel.\n")
"#\n"
"Accepted values:\n"
" none\n"
" Disable readahead.\n"
" auto\n"
" Use default value chosen by kernel.\n"
"#\n")
cfg(activation_raid_fault_policy_CFG, "raid_fault_policy", activation_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_RAID_FAULT_POLICY, vsn(2, 2, 89), NULL, 0, NULL,
"Defines how a device failure in a RAID LV is handled.\n"
"This includes LVs that have the following segment types:\n"
"raid1, raid4, raid5*, and raid6*.\n"
"If a device in the LV fails, the policy determines the\n"
"steps perfomed by dmeventd automatically, and the steps\n"
"perfomed by 'lvconvert --repair --use-policies' run manually.\n"
"If a device in the LV fails, the policy determines the steps\n"
"performed by dmeventd automatically, and the steps perfomed by the\n"
"manual command lvconvert --repair --use-policies.\n"
"Automatic handling requires dmeventd to be monitoring the LV.\n"
"Possible options are: warn, allocate.\n"
"warn - Use the system log to warn the user that a device\n"
"in the RAID LV has failed. It is left to the user to run\n"
"'lvconvert --repair' manually to remove or replace the failed\n"
"device. As long as the number of failed devices does not\n"
"exceed the redundancy of the logical volume (1 device for\n"
"raid4/5, 2 for raid6, etc) the LV will remain usable.\n"
"allocate - Attempt to use any extra physical volumes in the\n"
"volume group as spares and replace faulty devices.\n")
"#\n"
"Accepted values:\n"
" warn\n"
" Use the system log to warn the user that a device in the RAID LV\n"
" has failed. It is left to the user to run lvconvert --repair\n"
" manually to remove or replace the failed device. As long as the\n"
" number of failed devices does not exceed the redundancy of the LV\n"
" (1 device for raid4/5, 2 for raid6), the LV will remain usable.\n"
" allocate\n"
" Attempt to use any extra physical volumes in the VG as spares and\n"
" replace faulty devices.\n"
"#\n")
cfg_runtime(activation_mirror_image_fault_policy_CFG, "mirror_image_fault_policy", activation_CFG_SECTION, 0, CFG_TYPE_STRING, vsn(2, 2, 57), 0, NULL,
"Defines how a device failure in a 'mirror' LV is handled.\n"
"An LV with the 'mirror' segment type is composed of mirror\n"
"images (copies) and a mirror log.\n"
"A disk log ensures that a mirror LV does not need to be\n"
"re-synced (all copies made the same) every time a machine\n"
"reboots or crashes.\n"
"If a device in the LV fails, this policy determines the\n"
"steps perfomed by dmeventd automatically, and the steps\n"
"performed by 'lvconvert --repair --use-policies' run manually.\n"
"An LV with the 'mirror' segment type is composed of mirror images\n"
"(copies) and a mirror log. A disk log ensures that a mirror LV does\n"
"not need to be re-synced (all copies made the same) every time a\n"
"machine reboots or crashes. If a device in the LV fails, this policy\n"
"determines the steps perfomed by dmeventd automatically, and the steps\n"
"performed by the manual command lvconvert --repair --use-policies.\n"
"Automatic handling requires dmeventd to be monitoring the LV.\n"
"Possible options are: remove, allocate, allocate_anywhere.\n"
"remove - Simply remove the faulty device and run without it.\n"
"If the log device fails, the mirror would convert to using\n"
"an in-memory log. This means the mirror will not\n"
"remember its sync status across crashes/reboots and\n"
"the entire mirror will be re-synced.\n"
"If a mirror image fails, the mirror will convert to a\n"
"non-mirrored device if there is only one remaining good copy.\n"
"allocate - Remove the faulty device and try to allocate space\n"
"on a new device to be a replacement for the failed device.\n"
"Using this policy for the log is fast and maintains the\n"
"ability to remember sync state through crashes/reboots.\n"
"Using this policy for a mirror device is slow, as it\n"
"requires the mirror to resynchronize the devices, but it\n"
"will preserve the mirror characteristic of the device.\n"
"This policy acts like 'remove' if no suitable device and\n"
"space can be allocated for the replacement.\n"
"allocate_anywhere - Not yet implemented. Useful to place\n"
"the log device temporarily on the same physical volume as\n"
"one of the mirror images. This policy is not recommended\n"
"for mirror devices since it would break the redundant nature\n"
"of the mirror. This policy acts like 'remove' if no suitable\n"
"device and space can be allocated for the replacement.\n")
"#\n"
"Accepted values:\n"
" remove\n"
" Simply remove the faulty device and run without it. If the log\n"
" device fails, the mirror would convert to using an in-memory log.\n"
" This means the mirror will not remember its sync status across\n"
" crashes/reboots and the entire mirror will be re-synced. If a\n"
" mirror image fails, the mirror will convert to a non-mirrored\n"
" device if there is only one remaining good copy.\n"
" allocate\n"
" Remove the faulty device and try to allocate space on a new\n"
" device to be a replacement for the failed device. Using this\n"
" policy for the log is fast and maintains the ability to remember\n"
" sync state through crashes/reboots. Using this policy for a\n"
" mirror device is slow, as it requires the mirror to resynchronize\n"
" the devices, but it will preserve the mirror characteristic of\n"
" the device. This policy acts like 'remove' if no suitable device\n"
" and space can be allocated for the replacement.\n"
" allocate_anywhere\n"
" Not yet implemented. Useful to place the log device temporarily\n"
" on the same physical volume as one of the mirror images. This\n"
" policy is not recommended for mirror devices since it would break\n"
" the redundant nature of the mirror. This policy acts like\n"
" 'remove' if no suitable device and space can be allocated for the\n"
" replacement.\n"
"#\n")
cfg(activation_mirror_log_fault_policy_CFG, "mirror_log_fault_policy", activation_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_MIRROR_LOG_FAULT_POLICY, vsn(1, 2, 18), NULL, 0, NULL,
"Defines how a device failure in a 'mirror' log LV is handled.\n"
@ -1308,21 +1382,23 @@ cfg(activation_auto_set_activation_skip_CFG, "auto_set_activation_skip", activat
cfg(activation_mode_CFG, "activation_mode", activation_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_ACTIVATION_MODE, vsn(2,2,108), NULL, 0, NULL,
"How LVs with missing devices are activated.\n"
"Possible options are: complete, degraded, partial.\n"
"complete - Only allow activation of an LV if all of\n"
"the Physical Volumes it uses are present. Other PVs\n"
"in the Volume Group may be missing.\n"
"degraded - Like complete, but additionally RAID LVs of\n"
"segment type raid1, raid4, raid5, radid6 and raid10 will\n"
"be activated if there is no data loss, i.e. they have\n"
"sufficient redundancy to present the entire addressable\n"
"range of the Logical Volume.\n"
"partial - Allows the activation of any LV even if a\n"
"missing or failed PV could cause data loss with a\n"
"portion of the Logical Volume inaccessible.\n"
"This setting should not normally be used, but may\n"
"sometimes assist with data recovery.\n"
"The '--activationmode' option overrides this setting.\n")
"The '--activationmode' option overrides this setting.\n"
"#\n"
"Accepted values:\n"
" complete\n"
" Only allow activation of an LV if all of the Physical Volumes it\n"
" uses are present. Other PVs in the Volume Group may be missing.\n"
" degraded\n"
" Like complete, but additionally RAID LVs of segment type raid1,\n"
" raid4, raid5, radid6 and raid10 will be activated if there is no\n"
" data loss, i.e. they have sufficient redundancy to present the\n"
" entire addressable range of the Logical Volume.\n"
" partial\n"
" Allows the activation of any LV even if a missing or failed PV\n"
" could cause data loss with a portion of the LV inaccessible.\n"
" This setting should not normally be used, but may sometimes\n"
" assist with data recovery.\n"
"#\n")
cfg_array(activation_lock_start_list_CFG, "lock_start_list", activation_CFG_SECTION, CFG_ALLOW_EMPTY|CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(2, 2, 124), NULL, 0, NULL,
"Locking is started only for VGs selected by this list.\n"
@ -1334,13 +1410,18 @@ cfg_array(activation_auto_lock_start_list_CFG, "auto_lock_start_list", activatio
cfg(metadata_pvmetadatacopies_CFG, "pvmetadatacopies", metadata_CFG_SECTION, CFG_ADVANCED | CFG_DEFAULT_COMMENTED, CFG_TYPE_INT, DEFAULT_PVMETADATACOPIES, vsn(1, 0, 0), NULL, 0, NULL,
"Number of copies of metadata to store on each PV.\n"
"Possible options are: 0, 1, 2.\n"
"If set to 2, two copies of the VG metadata are stored on\n"
"the PV, one at the front of the PV, and one at the end.\n"
"If set to 1, one copy is stored at the front of the PV.\n"
"If set to 0, no copies are stored on the PV. This may\n"
"be useful with VGs containing large numbers of PVs.\n"
"The '--pvmetadatacopies' option overrides this setting.\n")
"The '--pvmetadatacopies' option overrides this setting.\n"
"#\n"
"Accepted values:\n"
" 2\n"
" Two copies of the VG metadata are stored on the PV, one at the\n"
" front of the PV, and one at the end.\n"
" 1\n"
" One copy of VG metadata is stored at the front of the PV.\n"
" 0\n"
" No copies of VG metadata are stored on the PV. This may be\n"
" useful for VGs containing large numbers of PVs.\n"
"#\n")
cfg(metadata_vgmetadatacopies_CFG, "vgmetadatacopies", metadata_CFG_SECTION, CFG_DEFAULT_COMMENTED, CFG_TYPE_INT, DEFAULT_VGMETADATACOPIES, vsn(2, 2, 69), NULL, 0, NULL,
"Number of copies of metadata to maintain for each VG.\n"
@ -1438,75 +1519,134 @@ cfg(report_binary_values_as_numeric_CFG, "binary_values_as_numeric", report_CFG_
cfg(report_time_format_CFG, "time_format", report_CFG_SECTION, CFG_PROFILABLE | CFG_DEFAULT_COMMENTED, CFG_TYPE_STRING, DEFAULT_TIME_FORMAT, vsn(2, 2, 123), NULL, 0, NULL,
"Set time format for fields reporting time values.\n"
"Format specification is a string which may contain special character\n"
"sequences and ordinary character sequences. Ordinary character sequences\n"
"are copied verbatim. Each special character sequence is introduced by \'%\'\n"
"character and such sequence is then substituted with a value as described below:\n"
"\%a The abbreviated name of the day of the week according to the\n"
" current locale.\n"
"\%A The full name of the day of the week according to the current locale.\n"
"\%b The abbreviated month name according to the current locale.\n"
"\%B The full month name according to the current locale.\n"
"\%c The preferred date and time representation for the current locale. (alt E)\n"
"\%C The century number (year/100) as a 2-digit integer. (alt E)\n"
"\%d The day of the month as a decimal number (range 01 to 31). (alt O)\n"
"\%D Equivalent to \%m/\%d/\%y. (For Americans only. Americans should\n"
" note that in other countries\%d/\%m/\%y is rather common. This means\n"
" that in international context this format is ambiguous and should not\n"
" be used.\n"
"\%e Like \%d, the day of the month as a decimal number, but a leading zero\n"
" is replaced by a space. (alt O)\n"
"\%E Modifier: use alternative local-dependent representation if available.\n"
"\%F Equivalent to \%Y-\%m-\%d (the ISO 8601 date format).\n"
"\%G The ISO 8601 week-based year with century as adecimal number. The 4-digit\n"
" year corresponding to the ISO week number (see \%V). This has the same\n"
" format and value as \%Y, except that if the ISO week number belongs to\n"
" the previous or next year, that year is used instead.\n"
"\%g Like \%G, but without century, that is, with a 2-digit year (00-99).\n"
"\%h Equivalent to \%b.\n"
"\%H The hour as a decimal number using a 24-hour clock (range 00 to 23). (alt O)\n"
"\%I The hour as a decimal number using a 12-hour clock (range 01 to 12). (alt O)\n"
"\%j The day of the year as a decimal number (range 001 to 366).\n"
"\%k The hour (24-hour clock) as a decimal number (range 0 to 23);\n"
" single digits are preceded by a blank. (See also \%H.)\n"
"\%l The hour (12-hour clock) as a decimal number (range 1 to 12);\n"
" single digits are preceded by a blank. (See also \%I.)\n"
"\%m The month as a decimal number (range 01 to 12). (alt O)\n"
"\%M The minute as a decimal number (range 00 to 59). (alt O)\n"
"\%O Modifier: use alternative numeric symbols.\n"
"\%p Either \"AM\" or \"PM\" according to the given time value,\n"
" or the corresponding strings for the current locale. Noon is\n"
" treated as \"PM\" and midnight as \"AM\".\n"
"\%P Like \%p but in lowercase: \"am\" or \"pm\" or a corresponding\n"
" string for the current locale.\n"
"\%r The time in a.m. or p.m. notation. In the POSIX locale this is\n"
" equivalent to \%I:\%M:\%S \%p.\n"
"\%R The time in 24-hour notation (\%H:\%M). For a version including\n"
" the seconds, see \%T below.\n"
"\%s The number of seconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC)\n"
"\%S The second as a decimal number (range 00 to 60).\n"
" (The range is up to 60 to allow for occasional leap seconds.) (alt O)\n"
"\%t A tab character.\n"
"\%T The time in 24-hour notation (\%H:\%M:\%S).\n"
"\%u The day of the week as a decimal, range 1 to 7, Monday being 1.\n"
" See also \%w. (alt O)\n"
"\%U The week number of the current year as a decimal number,\n"
" range 00 to 53, starting with the first Sunday as the first\n"
" day of week 01. See also \%V and \%W. (alt O)\n"
"\%V The ISO 8601 week number of the current year as a decimal number,\n"
" range 01 to 53, where week 1 is the first week that has at least 4 days\n"
" in the new year. See also \%U and \%W. (alt O)\n"
"\%w The day of the week as a decimal, range 0 to 6, Sunday being 0.\n"
" See also \%u. (alt O)\n"
"\%W The week number of the current year as a decimal number, range 00 to 53,\n"
" starting with the first Monday as the first day of week 01. (alt O)\n"
"\%x The preferred date representation for the current locale without the time. (alt E)\n"
"\%X The preferred time representation for the current locale without the date. (alt E)\n"
"\%y The year as a decimal number without a century (range 00 to 99). (alt E, alt O)\n"
"\%Y The year as a decimal number including the century. (alt E)\n"
"\%z The +hhmm or -hhmm numeric timezone (that is, the hour and minute\n"
" offset from UTC).\n"
"\%Z The timezone name or abbreviation.\n"
"\%\% A literal '\%' character.\n")
"sequences and ordinary character sequences. Ordinary character\n"
"sequences are copied verbatim. Each special character sequence is\n"
"introduced by th e\'%\' character and such sequence is then\n"
"substituted with a value as described below.\n"
"#\n"
"Accepted values:\n"
" \%a\n"
" The abbreviated name of the day of the week according to the\n"
" current locale.\n"
" \%A\n"
" The full name of the day of the week according to the current\n"
" locale.\n"
" \%b\n"
" The abbreviated month name according to the current locale.\n"
" \%B\n"
" The full month name according to the current locale.\n"
" \%c\n"
" The preferred date and time representation for the current\n"
" locale (alt E)\n"
" \%C\n"
" The century number (year/100) as a 2-digit integer. (alt E)\n"
" \%d\n"
" The day of the month as a decimal number (range 01 to 31).\n"
" (alt O)\n"
" \%D\n"
" Equivalent to \%m/\%d/\%y. (For Americans only. Americans should\n"
" note that in other countries\%d/\%m/\%y is rather common. This\n"
" means that in international context this format is ambiguous and\n"
" should not be used.\n"
" \%e\n"
" Like \%d, the day of the month as a decimal number, but a leading\n"
" zero is replaced by a space. (alt O)\n"
" \%E\n"
" Modifier: use alternative local-dependent representation if\n"
" available.\n"
" \%F\n"
" Equivalent to \%Y-\%m-\%d (the ISO 8601 date format).\n"
" \%G\n"
" The ISO 8601 week-based year with century as adecimal number.\n"
" The 4-digit year corresponding to the ISO week number (see \%V).\n"
" This has the same format and value as \%Y, except that if the\n"
" ISO week number belongs to the previous or next year, that year\n"
" is used instead.\n"
" \%g\n"
" Like \%G, but without century, that is, with a 2-digit year\n"
" (00-99).\n"
" \%h\n"
" Equivalent to \%b.\n"
" \%H\n"
" The hour as a decimal number using a 24-hour clock\n"
" (range 00 to 23). (alt O)\n"
" \%I\n"
" The hour as a decimal number using a 12-hour clock\n"
" (range 01 to 12). (alt O)\n"
" \%j\n"
" The day of the year as a decimal number (range 001 to 366).\n"
" \%k\n"
" The hour (24-hour clock) as a decimal number (range 0 to 23);\n"
" single digits are preceded by a blank. (See also \%H.)\n"
" \%l\n"
" The hour (12-hour clock) as a decimal number (range 1 to 12);\n"
" single digits are preceded by a blank. (See also \%I.)\n"
" \%m\n"
" The month as a decimal number (range 01 to 12). (alt O)\n"
" \%M\n"
" The minute as a decimal number (range 00 to 59). (alt O)\n"
" \%O\n"
" Modifier: use alternative numeric symbols.\n"
" \%p\n"
" Either \"AM\" or \"PM\" according to the given time value,\n"
" or the corresponding strings for the current locale. Noon is\n"
" treated as \"PM\" and midnight as \"AM\".\n"
" \%P\n"
" Like \%p but in lowercase: \"am\" or \"pm\" or a corresponding\n"
" string for the current locale.\n"
" \%r\n"
" The time in a.m. or p.m. notation. In the POSIX locale this is\n"
" equivalent to \%I:\%M:\%S \%p.\n"
" \%R\n"
" The time in 24-hour notation (\%H:\%M). For a version including\n"
" the seconds, see \%T below.\n"
" \%s\n"
" The number of seconds since the Epoch,\n"
" 1970-01-01 00:00:00 +0000 (UTC)\n"
" \%S\n"
" The second as a decimal number (range 00 to 60). (The range is\n"
" up to 60 to allow for occasional leap seconds.) (alt O)\n"
" \%t\n"
" A tab character.\n"
" \%T\n"
" The time in 24-hour notation (\%H:\%M:\%S).\n"
" \%u\n"
" The day of the week as a decimal, range 1 to 7, Monday being 1.\n"
" See also \%w. (alt O)\n"
" \%U\n"
" The week number of the current year as a decimal number,\n"
" range 00 to 53, starting with the first Sunday as the first\n"
" day of week 01. See also \%V and \%W. (alt O)\n"
" \%V\n"
" The ISO 8601 week number of the current year as a decimal number,\n"
" range 01 to 53, where week 1 is the first week that has at least\n"
" 4 days in the new year. See also \%U and \%W. (alt O)\n"
" \%w\n"
" The day of the week as a decimal, range 0 to 6, Sunday being 0.\n"
" See also \%u. (alt O)\n"
" \%W\n"
" The week number of the current year as a decimal number,\n"
" range 00 to 53, starting with the first Monday as the first day\n"
" of week 01. (alt O)\n"
" \%x\n"
" The preferred date representation for the current locale without\n"
" the time. (alt E)\n"
" \%X\n"
" The preferred time representation for the current locale without\n"
" the date. (alt E)\n"
" \%y\n"
" The year as a decimal number without a century (range 00 to 99).\n"
" (alt E, alt O)\n"
" \%Y\n"
" The year as a decimal number including the century. (alt E)\n"
" \%z\n"
" The +hhmm or -hhmm numeric timezone (that is, the hour and minute\n"
" offset from UTC).\n"
" \%Z\n"
" The timezone name or abbreviation.\n"
" \%\%\n"
" A literal '\%' character.\n"
"#\n")
cfg(report_devtypes_sort_CFG, "devtypes_sort", report_CFG_SECTION, CFG_PROFILABLE | CFG_DEFAULT_COMMENTED, CFG_TYPE_STRING, DEFAULT_DEVTYPES_SORT, vsn(2, 2, 101), NULL, 0, NULL,
"List of columns to sort by when reporting 'lvm devtypes' command.\n"