summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Teigland <teigland@redhat.com>2015-08-13 15:31:29 -0500
committerDavid Teigland <teigland@redhat.com>2015-08-13 15:43:03 -0500
commitdca4fa86fc6930da19fda38ead107de0993a7de4 (patch)
tree08a28e5eff16cbf5d5e5ce99edc0648dde668f1f
parentd02479e2b4d73b1a69b2274b6aa5c269f436feab (diff)
downloadlvm2-dev-dct-config.tar.gz
config: create lists of accepted values in descriptionsdev-dct-config
-rw-r--r--lib/config/config_settings.h501
1 files changed, 291 insertions, 210 deletions
diff --git a/lib/config/config_settings.h b/lib/config/config_settings.h
index d583f4781..44c80012e 100644
--- a/lib/config/config_settings.h
+++ b/lib/config/config_settings.h
@@ -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_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")
cfg_runtime(allocation_cache_policy_CFG, "cache_policy", allocation_CFG_SECTION, CFG_PROFILABLE | CFG_DEFAULT_COMMENTED, CFG_TYPE_STRING, vsn(2, 2, 127), 0, NULL,
"The default cache policy used for new cache volume.\n"
@@ -512,19 +519,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"
@@ -678,24 +694,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")
@@ -762,55 +787,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 preferred\n"
+ " 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"
@@ -958,23 +993,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"
@@ -1060,18 +1100,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"
@@ -1079,43 +1124,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",
@@ -1139,62 +1205,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"
@@ -1307,21 +1381,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"
@@ -1333,13 +1409,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"