diff --git a/lib/config/config_settings.h b/lib/config/config_settings.h index 1e53c7e78..4dcec95ee 100644 --- a/lib/config/config_settings.h +++ b/lib/config/config_settings.h @@ -74,40 +74,43 @@ cfg_section(root_CFG_SECTION, "(root)", root_CFG_SECTION, 0, vsn(0, 0, 0), NULL) cfg_section(config_CFG_SECTION, "config", root_CFG_SECTION, 0, vsn(2, 2, 99), - "This section allows you to set the way the configuration settings are handled.\n") + "How LVM configuration settings are handled.\n") cfg_section(devices_CFG_SECTION, "devices", root_CFG_SECTION, 0, vsn(1, 0, 0), - "This section allows you to configure which block devices should\n" - "be used by the LVM system.\n") + "How LVM uses block devices.\n") cfg_section(allocation_CFG_SECTION, "allocation", root_CFG_SECTION, CFG_PROFILABLE, vsn(2, 2, 77), - "This section allows you to configure the way in which LVM selects\n" - "free space for its Logical Volumes.\n") + "How LVM selects free space for Logical Volumes.\n") cfg_section(log_CFG_SECTION, "log", root_CFG_SECTION, 0, vsn(1, 0, 0), - "This section that allows you to configure the nature of the\n" - "information that LVM reports.\n") + "How LVM log information is reported.\n") cfg_section(backup_CFG_SECTION, "backup", root_CFG_SECTION, 0, vsn(1, 0, 0), - "Configuration of metadata backups and archiving. In LVM when we\n" - "talk about a 'backup' we mean making a copy of the metadata for the\n" - "*current* system. The 'archive' contains old metadata configurations.\n" - "Backups are stored in a human readable text format.\n") + "How LVM metadata is backed up and archived.\n" + "In LVM, a 'backup' is a copy of the metadata for the\n" + "current system, and an 'archive' contains old metadata\n" + "configurations. They are stored in a human readable\n" + "text format.\n") cfg_section(shell_CFG_SECTION, "shell", root_CFG_SECTION, 0, vsn(1, 0, 0), - "Settings for the running LVM in shell (readline) mode.\n") + "Settings for running LVM in shell (readline) mode.\n") cfg_section(global_CFG_SECTION, "global", root_CFG_SECTION, CFG_PROFILABLE, vsn(1, 0, 0), "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(report_CFG_SECTION, "report", root_CFG_SECTION, CFG_ADVANCED | CFG_PROFILABLE, vsn(1, 0, 0), NULL) -cfg_section(dmeventd_CFG_SECTION, "dmeventd", root_CFG_SECTION, 0, vsn(1, 2, 3), NULL) -cfg_section(tags_CFG_SECTION, "tags", root_CFG_SECTION, 0, vsn(1, 0, 18), NULL) -cfg_section(local_CFG_SECTION, "local", root_CFG_SECTION, 0, vsn(2, 2, 117), NULL) - +cfg_section(report_CFG_SECTION, "report", root_CFG_SECTION, CFG_ADVANCED | 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), + "Settings for the LVM event daemon.\n") + +cfg_section(tags_CFG_SECTION, "tags", root_CFG_SECTION, 0, vsn(1, 0, 18), NULL) +cfg_section(local_CFG_SECTION, "local", root_CFG_SECTION, 0, vsn(2, 2, 117), + "LVM settings that are specific to the local host.\n") + cfg(config_checks_CFG, "checks", config_CFG_SECTION, 0, CFG_TYPE_BOOL, 1, vsn(2, 2, 99), "If enabled, any LVM configuration mismatch is reported.\n" "This implies checking that the configuration key is understood\n" @@ -117,7 +120,7 @@ cfg(config_checks_CFG, "checks", config_CFG_SECTION, 0, CFG_TYPE_BOOL, 1, vsn(2, "configuration key not being found is issued in verbose mode only).\n") cfg(config_abort_on_errors_CFG, "abort_on_errors", config_CFG_SECTION, 0, CFG_TYPE_BOOL, 0, vsn(2,2,99), - "If enabled, any configuration mismatch aborts the LVM process.\n") + "Abort the LVM process if a configuration mismatch is found.\n") 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") @@ -127,30 +130,28 @@ cfg(devices_dir_CFG, "dir", devices_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_DEV "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), - "An array of directories that contain the device nodes you wish\n" - "to use with LVM.\n") + "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) 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), - "If set, the cache of block device nodes with all associated symlinks\n" - "will be constructed out of the existing udev database content.\n" - "This avoids using and opening any inapplicable non-block devices or\n" - "subdirectories found in the device directory. This setting is applied\n" - "to udev-managed device directory only, other directories will be scanned\n" - "fully. LVM needs to be compiled with udev support for this setting to\n" - "take effect. Any device node or symlink not managed by udev in udev\n" - "directory will be ignored with this setting on.\n") + "Obtain the list of available devices from udev.\n" + "This avoids opening or using any inapplicable non-block\n" + "devices or subdirectories found in the udev directory.\n" + "Any device node or symlink not managed by udev in the udev\n" + "directory is ignored. This setting applies only to the\n" + "udev-managed device directory; other directories will be\n" + "scanned fully. LVM needs to be compiled with udev support\n" + "for this setting to apply.\n") cfg(devices_external_device_info_source_CFG, "external_device_info_source", devices_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_EXTERNAL_DEVICE_INFO_SOURCE, vsn(2, 2, 116), - "Select external device information source to use for\n" - "further and more detailed device determination. Some\n" - "information may already be available in the system and\n" + "Select an external device information source.\n" + "Some information may already be available in the system and\n" "LVM can use this information to determine the exact type\n" - "or use of the device it processes. Using existing external\n" + "or use of devices it processes. Using an existing external\n" "device information source can speed up device processing\n" "as LVM does not need to run its own native routines to acquire\n" - "this information. For example, such information is used to\n" + "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" @@ -176,7 +177,7 @@ cfg_array(devices_preferred_names_CFG, "preferred_names", devices_CFG_SECTION, C "preferred_names = [ \"^/dev/mpath/\", \"^/dev/mapper/mpath\", \"^/dev/[hs]d\" ]\n") cfg_array(devices_filter_CFG, "filter", devices_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(1, 0, 0), - "Limit the block devices that are used by LVM.\n" + "Limit the block devices that are used by LVM commands.\n" "This is a list of regular expressions used to accept or\n" "reject block device path names. Each regex is delimited\n" "by a vertical bar '|' (or any character) and is preceded\n" @@ -211,21 +212,21 @@ cfg_array(devices_filter_CFG, "filter", devices_CFG_SECTION, CFG_DEFAULT_UNDEFIN "filter = [ \"a|^/dev/hda8$|\", \"r|.*/|\" ]\n") cfg_array(devices_global_filter_CFG, "global_filter", devices_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(2, 2, 98), - "Since filter is often overridden from the command line,\n" - "it is not suitable for system-wide device filtering,\n" - "e.g. udev rules and lvmetad. To hide devices from LVM-specific\n" - "udev processing and lvmetad, use global_filter.\n" - "The syntax is the same as devices/filter above.\n" + "Limit the block devices that are used by LVM system components.\n" + "Because devices/filter may be overridden from the command line,\n" + "it is not suitable for system-wide device filtering, e.g. udev\n" + "and lvmetad. Use global_filter to hide devices from these LVM\n" + "system components. The syntax is the same as devices/filter.\n" "Devices rejected by global_filter are not opened by LVM.\n") cfg_runtime(devices_cache_CFG, "cache", devices_CFG_SECTION, 0, CFG_TYPE_STRING, vsn(1, 0, 0), - "This setting has been replaced by the devices/cache_dir setting.\n") + "This has been replaced by the devices/cache_dir setting.\n") cfg_runtime(devices_cache_dir_CFG, "cache_dir", devices_CFG_SECTION, 0, CFG_TYPE_STRING, vsn(1, 2, 19), + "Directory in which to store the device cache file.\n" "The results of filtering are cached on disk to avoid\n" "rescanning dud devices (which can take a very long time).\n" - "By default this cache is stored in a file named .cache\n" - "in the directory specified by this setting.\n" + "By default this cache is stored in a file named .cache.\n" "It is safe to delete this file; the tools regenerate it.\n" "If obtain_device_list_from_udev is enabled, the list of devices\n" "is obtained from udev and any existing .cache file is removed.\n") @@ -237,41 +238,40 @@ cfg(devices_write_cache_state_CFG, "write_cache_state", devices_CFG_SECTION, 0, "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), - "List of pairs of additional acceptable block device types found\n" - "in /proc/devices with maximum (non-zero) number of partitions.\n" + "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" "Example:\n" "types = [ \"fd\", 16 ]\n") cfg(devices_sysfs_scan_CFG, "sysfs_scan", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_SYSFS_SCAN, vsn(1, 0, 8), - "Restrict device scanning to block devices that sysfs believes\n" - "are valid. (sysfs must be part of the kernel and mounted.)\n" + "Restrict device scanning to block devices appearing in sysfs.\n" "This is a quick way of filtering out block devices that are\n" - "not present.\n") + "not present on the system. sysfs must be part of the kernel\n" + "and mounted.)\n") cfg(devices_multipath_component_detection_CFG, "multipath_component_detection", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_MULTIPATH_COMPONENT_DETECTION, vsn(2, 2, 89), - "Ignore devices used as component paths of device-mapper\n" - "multipath devices.\n") + "Ignore devices that are components of DM multipath devices.\n") cfg(devices_md_component_detection_CFG, "md_component_detection", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_MD_COMPONENT_DETECTION, vsn(1, 0, 18), - "Ignore devices used as components of software RAID (md) devices\n" - "by looking for md superblocks.\n") + "Ignore devices that are components of software RAID (md) devices.\n") cfg(devices_fw_raid_component_detection_CFG, "fw_raid_component_detection", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_FW_RAID_COMPONENT_DETECTION, vsn(2, 2, 112), - "Ignore devices used as components of firmware RAID devices.\n" - "N.B. LVM itself is not detecting firmware RAID - an\n" - "external_device_info_source other than none must be used for\n" - "this detection to execute.\n") + "Ignore devices that are components of firmware RAID devices.\n" + "LVM must use an external_device_info_source other than none\n" + "for this detection to execute.\n") cfg(devices_md_chunk_alignment_CFG, "md_chunk_alignment", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_MD_CHUNK_ALIGNMENT, vsn(2, 2, 48), - "If a PV is placed directly upon an md device, align its data\n" - "blocks with the md device's stripe-width.\n") + "Align PV data blocks with md device's stripe-width.\n" + "This applies if a PV is placed directly on an md device.\n") cfg(devices_default_data_alignment_CFG, "default_data_alignment", devices_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_DATA_ALIGNMENT, vsn(2, 2, 75), - "Default alignment of the start of a data area in MB.\n" + "Default alignment of the start of a PV data area in MB.\n" "If set to 0, a value of 64KB will be used.\n" "Set to 1 for 1MiB, 2 for 2MiB, etc.\n") cfg(devices_data_alignment_detection_CFG, "data_alignment_detection", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_DATA_ALIGNMENT_DETECTION, vsn(2, 2, 51), + "Detect PV data alignment based on sysfs device information.\n" "The start of a PV data area will be a multiple of\n" "minimum_io_size or optimal_io_size exposed in sysfs.\n" "minimum_io_size is the smallest request the device can perform\n" @@ -283,16 +283,17 @@ cfg(devices_data_alignment_detection_CFG, "data_alignment_detection", devices_CF "This setting takes precedence over md_chunk_alignment.\n") cfg(devices_data_alignment_CFG, "data_alignment", devices_CFG_SECTION, 0, CFG_TYPE_INT, 0, vsn(2, 2, 45), - "Alignment (in KB) of start of data area when creating a new PV.\n" - "If a PV is placed directly upon an md device and\n" + "Alignment of the start of a PV data area in KB.\n" + "If a PV is placed directly on an md device and\n" "md_chunk_alignment or data_alignment_detection are enabled,\n" "then this setting is ignored. Otherwise, md_chunk_alignment\n" "and data_alignment_detection are disabled if this is set.\n" "Set to 0 to use the default alignment or the page size, if larger.\n") cfg(devices_data_alignment_offset_detection_CFG, "data_alignment_offset_detection", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_DATA_ALIGNMENT_OFFSET_DETECTION, vsn(2, 2, 50), - "The start of a PV aligned data area will be shifted by\n" - "the alignment_offset exposed in sysfs. This offset is often 0, but\n" + "Detect PV data alignment offset based on sysfs device information.\n" + "The start of a PV aligned data area will be shifted by the\n" + "alignment_offset exposed in sysfs. This offset is often 0, but\n" "may be non-zero. Certain 4KB sector drives that compensate for\n" "windows partitioning will have an alignment_offset of 3584 bytes\n" "(sector 7 is the lowest aligned logical block, the 4KB sectors start\n" @@ -300,13 +301,13 @@ cfg(devices_data_alignment_offset_detection_CFG, "data_alignment_offset_detectio "pvcreate --dataalignmentoffset will skip this detection.\n") cfg(devices_ignore_suspended_devices_CFG, "ignore_suspended_devices", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_IGNORE_SUSPENDED_DEVICES, vsn(1, 2, 19), - "While scanning the system for PVs, skip a device-mapper\n" - "device that has its I/O suspended. Otherwise, LVM waits\n" - "for the device to become accessible. This should only be\n" - "needed in recovery situations.\n") + "Ignore DM devices that have I/O suspended while scanning devices.\n" + "Otherwise, LVM waits for a suspended device to become accessible.\n" + "This should only be needed in recovery situations.\n") cfg(devices_ignore_lvm_mirrors_CFG, "ignore_lvm_mirrors", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_IGNORE_LVM_MIRRORS, vsn(2, 2, 104), - "Enable this to avoid possible deadlocks when using the 'mirror'\n" + "Do not scan 'mirror' LVs to avoid possible deadlocks.\n" + "This avoids possible deadlocks when using the 'mirror'\n" "segment type. This setting determines whether logical volumes\n" "using the 'mirror' segment type are scanned for LVM labels.\n" "This affects the ability of mirrors to be used as physical volumes.\n" @@ -325,6 +326,7 @@ cfg(devices_ignore_lvm_mirrors_CFG, "ignore_lvm_mirrors", devices_CFG_SECTION, 0 "better choice for VG stacking.\n") cfg(devices_disable_after_error_count_CFG, "disable_after_error_count", devices_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_DISABLE_AFTER_ERROR_COUNT, vsn(2, 2, 75), + "Number of I/O errors after which a device is skipped.\n" "During each LVM operation, errors received from each device\n" "are counted. If the counter of a device exceeds the limit set\n" "here, no further I/O is sent to that device for the remainder\n" @@ -341,17 +343,19 @@ cfg(devices_pv_min_size_CFG, "pv_min_size", devices_CFG_SECTION, 0, CFG_TYPE_INT "value was 512.\n") cfg(devices_issue_discards_CFG, "issue_discards", devices_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_ISSUE_DISCARDS, vsn(2, 2, 85), - "Issue discards to a logical volume's underlying physical volumes\n" - "when the logical volume is no longer using the physical volumes'\n" - "space, e.g. lvremove, lvreduce. Discards inform the storage that\n" - "a region is no longer in use. Storage that supports discards\n" - "advertise the protocol specific way discards should be issued by\n" - "the kernel (TRIM, UNMAP, or WRITE SAME with UNMAP bit set).\n" + "Issue discards to PVs that are no longer used by an LV.\n" + "Discards are sent to an LV's underlying physical volumes when\n" + "the LV is no longer using the physical volumes' space, e.g.\n" + "lvremove, lvreduce. Discards inform the storage that a region\n" + "is no longer used. Storage that supports discards advertise\n" + "the protocol-specific way discards should be issued by the\n" + "kernel (TRIM, UNMAP, or WRITE SAME with UNMAP bit set).\n" "Not all storage will support or benefit from discards, but SSDs\n" "and thinly provisioned LUNs generally do. If enabled, discards\n" "will only be issued if both the storage and kernel provide support.\n") cfg_array(allocation_cling_tag_list_CFG, "cling_tag_list", allocation_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(2, 2, 77), + "Advise LVM which PVs to use when searching for new space.\n" "When searching for free space to extend an LV, the 'cling'\n" "allocation policy will choose space on the same PVs as the last\n" "segment of the existing LV. If there is insufficient space and a\n" @@ -368,23 +372,22 @@ cfg_array(allocation_cling_tag_list_CFG, "cling_tag_list", allocation_CFG_SECTIO "cling_tag_list = [ \"@site1\", \"@site2\" ]\n") cfg(allocation_maximise_cling_CFG, "maximise_cling", allocation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_MAXIMISE_CLING, vsn(2, 2, 85), + "Use a previous allocation algorithm.\n" "Changes made in version 2.02.85 extended the reach of the 'cling'\n" "policies to detect more situations where data can be grouped onto\n" "the same disks. This setting can be used to disable the changes\n" "and revert to the previous algorithm.\n") cfg(allocation_use_blkid_wiping_CFG, "use_blkid_wiping", allocation_CFG_SECTION, 0, CFG_TYPE_BOOL, 1, vsn(2, 2, 105), - "Use the blkid library instead of native LVM code to detect\n" - "any existing signatures while creating new PVs and LVs.\n" - "LVM needs to be compiled with blkid wiping support for this\n" - "setting to take effect.\n" + "Use blkid to detect existing signatures on new PVs and LVs.\n" + "The blkid library can detect more signatures than the\n" + "native LVM detection code, but may take longer.\n" + "LVM needs to be compiled with blkid wiping support for\n" + "this setting to apply.\n" "LVM native detection code is currently able to recognize:\n" "MD device signatures, swap signature, and LUKS signatures.\n" "To see the list of signatures recognized by blkid, check the\n" - "output of the 'blkid -k' command. blkid can recognize more\n" - "signatures than LVM native detection code, but due to this\n" - "higher number of signatures to be recognized, it can take more\n" - "time to complete the signature scan.\n") + "output of the 'blkid -k' command.\n") cfg(allocation_wipe_signatures_when_zeroing_new_lvs_CFG, "wipe_signatures_when_zeroing_new_lvs", allocation_CFG_SECTION, 0, CFG_TYPE_BOOL, 1, vsn(2, 2, 105), "Look for and erase any signatures while zeroing a new LV.\n" @@ -407,13 +410,11 @@ cfg(allocation_wipe_signatures_when_zeroing_new_lvs_CFG, "wipe_signatures_when_z "option is used directly.\n") cfg(allocation_mirror_logs_require_separate_pvs_CFG, "mirror_logs_require_separate_pvs", allocation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_MIRROR_LOGS_REQUIRE_SEPARATE_PVS, vsn(2, 2, 85), - "Guarantees that mirror logs will always be placed on\n" - "different PVs from the mirror images.\n" + "Mirror logs and images will always use different PVs.\n" "The default setting changed in version 2.02.85.\n") cfg(allocation_cache_pool_metadata_require_separate_pvs_CFG, "cache_pool_metadata_require_separate_pvs", allocation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_CACHE_POOL_METADATA_REQUIRE_SEPARATE_PVS, vsn(2, 2, 106), - "Guarantees that cache_pool metadata will always be\n" - "placed on different PVs from the cache_pool data.\n") + "Cache pool metadata and data will always use different PVs.\n") cfg(allocation_cache_pool_cachemode_CFG, "cache_pool_cachemode", allocation_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_CACHE_POOL_CACHEMODE, vsn(2, 2, 113), "The default cache mode used for new cache pools.\n" @@ -436,13 +437,11 @@ cfg_runtime(allocation_cache_pool_chunk_size_CFG, "cache_pool_chunk_size", alloc "1048576 in multiples of 32.\n") cfg(allocation_thin_pool_metadata_require_separate_pvs_CFG, "thin_pool_metadata_require_separate_pvs", allocation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_THIN_POOL_METADATA_REQUIRE_SEPARATE_PVS, vsn(2, 2, 89), - "Guarantees that thin pool metadata will always\n" - "be placed on different PVs from the pool data.\n") + "Thin pool metdata and data will always use different PVs.\n") cfg(allocation_thin_pool_zero_CFG, "thin_pool_zero", allocation_CFG_SECTION, CFG_PROFILABLE | CFG_PROFILABLE_METADATA, CFG_TYPE_BOOL, DEFAULT_THIN_POOL_ZERO, vsn(2, 2, 99), - "Enable/disable zeroing of thin pool data chunks before\n" - "their first use. Zeroing larger thin pool chunk size\n" - "reduces performance.\n") + "Thin pool data chunks are zeroed before they are first used.\n" + "Zeroing with a larger thin pool chunk size reduces performance.\n") cfg(allocation_thin_pool_discards_CFG, "thin_pool_discards", allocation_CFG_SECTION, CFG_PROFILABLE | CFG_PROFILABLE_METADATA, CFG_TYPE_STRING, DEFAULT_THIN_POOL_DISCARDS, vsn(2, 2, 99), "The discards behaviour of thin pool volumes.\n" @@ -496,22 +495,18 @@ cfg(log_overwrite_CFG, "overwrite", log_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_O "Overwrite the log file each time the program is run.\n") cfg(log_level_CFG, "level", log_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_LOGLEVEL, vsn(1, 0, 0), - "The level of log messages that are sent to the\n" - "log file and/or syslog. There are 6 syslog-like\n" - "log levels currently in use: 2 to 7 inclusive.\n" + "The level of log messages that are sent to the log file or syslog.\n" + "There are 6 syslog-like log levels currently in use: 2 to 7 inclusive.\n" "7 is the most verbose (LOG_DEBUG).\n") cfg(log_indent_CFG, "indent", log_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_INDENT, vsn(1, 0, 0), - "Format of output messages:\n" "indent messages according to their severity.\n") cfg(log_command_names_CFG, "command_names", log_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_CMD_NAME, vsn(1, 0, 0), - "Format of output messages:\n" - "display the command name on each line output.\n") + "Display the command name on each line of output.\n") cfg(log_prefix_CFG, "prefix", log_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, DEFAULT_MSG_PREFIX, vsn(1, 0, 0), - "Format of output messages:\n" - "a prefix to use before the message text.\n" + "A prefix to use before the log message text.\n" "(After the command name, if selected).\n" "Two spaces allows you to see/grep the severity of each message.\n" "To make the messages look similar to the original LVM tools use:\n" @@ -524,6 +519,7 @@ cfg(log_activation_CFG, "activation", log_CFG_SECTION, 0, CFG_TYPE_BOOL, 0, vsn( cfg(log_activate_file_CFG, "activate_file", log_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(1, 0, 0), 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), + "Select log messages by class.\n" "Some debugging messages are assigned to a class\n" "and only appear in debug output if the class is\n" "listed here. Classes currently available:\n" @@ -561,23 +557,24 @@ cfg(global_umask_CFG, "umask", global_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_UMAS "Interpreted as octal if the first digit is zero.\n") cfg(global_test_CFG, "test", global_CFG_SECTION, 0, CFG_TYPE_BOOL, 0, vsn(1, 0, 0), - "Enabling test mode means that no changes to the\n" - "on-disk metadata will be made. Equivalent to having\n" - "the -t option on every command.\n") + "No on-disk metadata changes will be made in test mode.\n" + "Equivalent to having the -t option on every command.\n") cfg(global_units_CFG, "units", global_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_UNITS, vsn(1, 0, 0), "Default value for --units argument.\n") cfg(global_si_unit_consistency_CFG, "si_unit_consistency", global_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_BOOL, DEFAULT_SI_UNIT_CONSISTENCY, vsn(2, 2, 54), - "The tools distinguish between powers of 1024 bytes,\n" + "Distinguish between powers of 1024 and 1000 bytes.\n" + "The LVM commands distinguish between powers of 1024 bytes,\n" "e.g. KiB, MiB, GiB, and powers of 1000 bytes, e.g. KB, MB, GB.\n" "If scripts depend on the old behaviour, disable\n" "this setting temporarily until they are updated.\n") cfg(global_suffix_CFG, "suffix", global_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_BOOL, DEFAULT_SUFFIX, vsn(1, 0, 0), - "Display unit suffix for sizes. This setting has no effect if the\n" - "units are in human-readable form (global/units=\"h\") in which case\n" - "the suffix is always displayed.\n") + "Display unit suffix for sizes.\n" + "This setting has no effect if the units are in human-readable\n" + "form (global/units=\"h\") in which case the suffix is always\n" + "displayed.\n") cfg(global_activation_CFG, "activation", global_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_ACTIVATION, vsn(1, 0, 0), "Enable/disable communication with the kernel device-mapper.\n" @@ -587,22 +584,20 @@ cfg(global_activation_CFG, "activation", global_CFG_SECTION, 0, CFG_TYPE_BOOL, D "the error messages.\n") cfg(global_fallback_to_lvm1_CFG, "fallback_to_lvm1", global_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_FALLBACK_TO_LVM1, vsn(1, 0, 18), - "Try running the LVM1 tools if LVM cannot communicate with\n" - "device-mapper. This option only applies to 2.4 kernels and\n" - "is provided to help switch between device-mapper kernels and\n" - "LVM1 kernels.\n" + "Try running LVM1 tools if LVM cannot communicate with DM.\n" + "This option only applies to 2.4 kernels and is provided to\n" + "help switch between device-mapper kernels and LVM1 kernels.\n" "The LVM1 tools need to be installed with .lvm1 suffices,\n" "e.g. vgscan.lvm1. They will stop working once the lvm2\n" "on-disk metadata format is used.\n") cfg(global_format_CFG, "format", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_FORMAT, vsn(1, 0, 0), - "The default metadata format that commands should use:\n" + "The default metadata format that commands should use.\n" "\"lvm1\" or \"lvm2\".\n" "The command line override is -M1 or -M2.\n") cfg_array(global_format_libraries_CFG, "format_libraries", global_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(1, 0, 0), - "A list of shared libraries to load that contain\n" - "code to process different formats of metadata.\n" + "Shared libraries that process different metadata formats.\n" "If support for LVM1 metadata was compiled as a shared library use\n" "format_libraries = \"liblvm2format1.so\"\n") @@ -636,58 +631,70 @@ cfg(global_locking_type_CFG, "locking_type", global_CFG_SECTION, 0, CFG_TYPE_INT "shared by a clustered machine.\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), - "When disabled, fail if a lock request cannot be satisfied immediately.\n") + "When disabled, fail if a lock request would block.\n") cfg(global_fallback_to_clustered_locking_CFG, "fallback_to_clustered_locking", global_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_FALLBACK_TO_CLUSTERED_LOCKING, vsn(2, 2, 42), + "Attempt to use built-in cluster locking if locking_type 2 fails.\n" "If using external locking (type 2) and initialisation fails,\n" "with this enabled, an attempt will be made to use the built-in\n" "clustered locking.\n" "If you are using a customised locking_library you should disable this.\n") cfg(global_fallback_to_local_locking_CFG, "fallback_to_local_locking", global_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_FALLBACK_TO_LOCAL_LOCKING, vsn(2, 2, 42), - "If an attempt to initialise type 2 or type 3 locking failed, perhaps\n" - "because cluster components such as clvmd are not running, with this\n" - "enabled, an attempt will be made to use local file-based locking (type 1).\n" - "If this succeeds, only commands against local volume groups will proceed.\n" + "Use locking_type 1 (local) if locking_type 2 or 3 fail.\n" + "If an attempt to initialise type 2 or type 3 locking failed,\n" + "perhaps because cluster components such as clvmd are not\n" + "running, with this enabled, an attempt will be made to use\n" + "local file-based locking (type 1). If this succeeds, only\n" + "commands against local volume groups will proceed.\n" "Volume Groups marked as clustered will be ignored.\n") cfg(global_locking_dir_CFG, "locking_dir", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_LOCK_DIR, vsn(1, 0, 0), - "Local non-LV directory that holds file-based locks while commands are\n" - "in progress. A directory like /tmp that may get wiped on reboot is OK.\n") + "Directory to use for LVM command file locks.\n" + "Local non-LV directory that holds file-based locks\n" + "while commands are in progress. A directory like\n" + "/tmp that may get wiped on reboot is OK.\n") cfg(global_prioritise_write_locks_CFG, "prioritise_write_locks", global_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_PRIORITISE_WRITE_LOCKS, vsn(2, 2, 52), - "Whenever there are competing read-only and read-write access requests for\n" - "a volume group's metadata, instead of always granting the read-only\n" - "requests immediately, delay them to allow the read-write requests to be\n" - "serviced. Without this setting, write access may be stalled by a high\n" - "volume of read-only requests.\n" - "NB. This option only affects locking_type = 1 viz. local file-based locking.\n") + "Allow quicker VG write access during high volume read access.\n" + "When there are competing read-only and read-write access\n" + "requests for a volume group's metadata, instead of always\n" + "granting the read-only requests immediately, delay them to\n" + "allow the read-write requests to be serviced. Without this\n" + "setting, write access may be stalled by a high volume of\n" + "read-only requests.\n" + "This option only affects locking_type 1 viz.\n" + "local file-based locking.\n") cfg(global_library_dir_CFG, "library_dir", global_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(1, 0, 0), "Search this directory first for shared libraries.\n") cfg(global_locking_library_CFG, "locking_library", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, DEFAULT_LOCKING_LIB, vsn(1, 0, 0), - "The external locking library to load if locking_type is set to 2.\n") + "The external locking library to use for locking_type 2.\n") cfg(global_abort_on_internal_errors_CFG, "abort_on_internal_errors", global_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_ABORT_ON_INTERNAL_ERRORS, vsn(2, 2, 57), - "Treat any internal errors as fatal errors, aborting the process that\n" - "encountered the internal error. Please only enable for debugging.\n") + "Abort a command that encounters an internal error.\n" + "Treat any internal errors as fatal errors, aborting\n" + "the process that encountered the internal error.\n" + "Please only enable for debugging.\n") cfg(global_detect_internal_vg_cache_corruption_CFG, "detect_internal_vg_cache_corruption", global_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_DETECT_INTERNAL_VG_CACHE_CORRUPTION, vsn(2, 2, 96), - "Check whether CRC is matching when parsed VG is used multiple times.\n" - "This is useful to catch unexpected internal cached volume group\n" - "structure modification. Please only enable for debugging.\n") + "Internal verification of VG structures.\n" + "Check if CRC matches when a parsed VG is\n" + "used multiple times. This is useful to catch\n" + "unexpected changes to cached VG structures.\n" + "Please only enable for debugging.\n") cfg(global_metadata_read_only_CFG, "metadata_read_only", global_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_METADATA_READ_ONLY, vsn(2, 2, 75), - "If enabled, no operations that change on-disk metadata will be permitted.\n" - "Additionally, read-only commands that encounter metadata in need of repair\n" - "will still be allowed to proceed exactly as if the repair had been\n" - "performed (except for the unchanged vg_seqno).\n" - "Inappropriate use could mess up your system, so seek advice first!\n") + "No operations that change on-disk metadata are permitted.\n" + "Additionally, read-only commands that encounter metadata\n" + "in need of repair will still be allowed to proceed exactly\n" + "as if the repair had been performed (except for the unchanged\n" + "vg_seqno). Inappropriate use could mess up your system,\n" + "so seek advice first!\n") cfg(global_mirror_segtype_default_CFG, "mirror_segtype_default", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_MIRROR_SEGTYPE, vsn(2, 2, 87), - "Defines which segtype is used when the short option -m\n" - "is used for mirroring.\n" + "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" @@ -706,35 +713,37 @@ cfg(global_mirror_segtype_default_CFG, "mirror_segtype_default", global_CFG_SECT "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" - "Use '--type mirror|raid1' to override this default setting.\n") + "The '--type mirror|raid1' option overrides this setting.\n") cfg(global_raid10_segtype_default_CFG, "raid10_segtype_default", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_RAID10_SEGTYPE, vsn(2, 2, 99), - "Determines the segment types used by default when\n" - "the '--stripes/-i' and '--mirrors/-m' arguments are both specified\n" - "during the creation of a logical volume.\n" + "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 - This implementation leverages MD's RAID10 personality through\n" - "device-mapper.\n" - "mirror - LVM will layer the 'mirror' and 'stripe' segment types. It\n" - "will do this by creating a mirror on top of striped sub-LVs;\n" - "effectively creating a RAID 0+1 array. This is suboptimal\n" - "in terms of providing redundancy and performance. Changing to\n" - "this setting is not advised.\n" - "Use '--type ' to override this default setting.\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") cfg(global_sparse_segtype_default_CFG, "sparse_segtype_default", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_SPARSE_SEGTYPE, vsn(2, 2, 112), - "Defines which segtype will be used when the shorthand '-V and -L' option\n" - "is used for sparse volume creation.\n" + "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 provided by LVM/DM.\n" - "It is using old snashot that mixes data and metadata within\n" - "a single COW storage volume and has poor performs when\n" - "the size of stored data passes hundereds of MB.\n" - "thin - Newer implementation leverages thin provisioning target.\n" - "It has bigger minimal chunk size (64KiB) and uses separate volume\n" - "for metadata. It has better performance especially in case of\n" - "bigger data uses. This device type has also full snapshot support.\n" - "Use '--type ' to override this default setting.\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") cfg(global_lvdisplay_shows_full_device_path_CFG, "lvdisplay_shows_full_device_path", global_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_BOOL, DEFAULT_LVDISPLAY_SHOWS_FULL_DEVICE_PATH, vsn(2, 2, 89), "The default format for displaying LV names in lvdisplay was changed\n" @@ -744,109 +753,122 @@ cfg(global_lvdisplay_shows_full_device_path_CFG, "lvdisplay_shows_full_device_pa "Enable this option to reinstate the previous format.\n") cfg(global_use_lvmetad_CFG, "use_lvmetad", global_CFG_SECTION, 0, CFG_TYPE_BOOL, 0, vsn(2, 2, 93), - "Whether to use (trust) a running instance of lvmetad. If this is disabled,\n" - "all commands fall back to the usual scanning mechanisms. When enabled,\n" - "*and* when lvmetad is running (automatically instantiated by making use of\n" - "systemd's socket-based service activation or run as an initscripts service\n" - "or run manually), the volume group metadata and PV state flags are obtained\n" - "from the lvmetad instance and no scanning is done by the individual\n" - "commands. In a setup with lvmetad, lvmetad udev rules *must* be set up for\n" - "LVM to work correctly. Without proper udev rules, all changes in block\n" - "device configuration will be *ignored* until a manual 'pvscan --cache'\n" - "is performed. These rules are installed by default.\n" - "If lvmetad has been running while use_lvmetad was disabled, it MUST be\n" - "stopped before enabled use_lvmetad and started again afterwards.\n" - "If using lvmetad, volume activation is also switched to automatic\n" - "event-based mode. In this mode, the volumes are activated based on\n" - "incoming udev events that automatically inform lvmetad about new PVs that\n" - "appear in the system. Once a VG is complete (all the PVs are present), it\n" - "is auto-activated. The activation/auto_activation_volume_list setting\n" - "controls which volumes are auto-activated (all by default).\n" - "A note about device filtering while lvmetad is used:\n" - "When lvmetad is updated (either automatically based on udev events or\n" - "directly by a pvscan --cache call), devices/filter is ignored and\n" - "all devices are scanned by default -- lvmetad always keeps unfiltered\n" - "information which is then provided to LVM commands and then each LVM\n" - "command does the filtering based on devices/filter setting itself. This\n" - "does not apply to non-regexp filters though: component filters such as\n" - "multipath and MD are checked at pvscan --cache time.\n" - "In order to completely prevent LVM from scanning a device, even when using\n" - "lvmetad, devices/global_filter must be used.\n" - "N.B. Don't use lvmetad with locking type 3 as lvmetad is not yet\n" - "supported in clustered environment. If use_lvmetad=1 and locking_type=3\n" - "is set at the same time, LVM always issues a warning message about this\n" - "and then it automatically disables use_lvmetad.\n") + "Use lvmetad to cache metadata and reduce disk scanning.\n" + "When enabled (and running), lvmetad provides LVM commands\n" + "with VG metadata and PV state. LVM commands then avoid\n" + "reading this information from disks which can be slow.\n" + "When disabled (or not running), LVM commands fall back to\n" + "scanning disks to obtain VG metadata.\n" + "lvmetad is kept updated via udev rules which must be set\n" + "up for LVM to work correctly. (The udev rules should be\n" + "installed by default.) Without a proper udev setup, changes\n" + "in the system's block device configuration will be unknown\n" + "to LVM, and ignored until a manual 'pvscan --cache' is run.\n" + "If lvmetad was running while use_lvmetad was disabled,\n" + "it must be stopped, use_lvmetad enabled, and then started.\n" + "When using lvmetad, LV activation is switched to an automatic,\n" + "event-based mode. In this mode, LVs are activated based on\n" + "incoming udev events that inform lvmetad when PVs appear on\n" + "the system. When a VG is complete (all PVs present), it is\n" + "auto-activated. The auto_activation_volume_list setting\n" + "controls which LVs are auto-activated (all by default.)\n" + "When lvmetad is updated (automatically by udev events, or\n" + "directly by pvscan --cache), devices/filter is ignored and\n" + "all devices are scanned by default. lvmetad always keeps\n" + "unfiltered information which is provided to LVM commands.\n" + "Each LVM command then filters based on devices/filter.\n" + "This does not apply to other, non-regexp, filtering settings:\n" + "component filters such as multipath and MD are checked\n" + "during pvscan --cache.\n" + "To filter a device and prevent scanning from the LVM system\n" + "entirely, including lvmetad, use devices/global_filter.\n" + "lvmetad is not compatible with locking_type 3 (clustering).\n" + "LVM prints warnings and ignores lvmetad if this combination\n" + "is seen.\n") cfg(global_thin_check_executable_CFG, "thin_check_executable", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, THIN_CHECK_CMD, vsn(2, 2, 94), - "Full path of the utility called to check that a thin metadata device\n" - "is in a state that allows it to be used.\n" - "Each time a thin pool needs to be activated or after it is deactivated\n" - "this utility is executed. The activation will only proceed if the utility\n" - "has an exit status of 0.\n" + "The full path to the thin_check command.\n" + "LVM uses this command to check that a thin metadata\n" + "device is in a usable state.\n" + "When a thin pool is activated and after it is deactivated,\n" + "this command is run. Activation will only proceed if the\n" + "command has an exit status of 0.\n" "Set to \"\" to skip this check. (Not recommended.)\n" - "The thin tools are available as part of the device-mapper-persistent-data\n" - "package from https://github.com/jthornber/thin-provisioning-tools.\n") + "Also see thin_check_options.\n" + "The thin tools are available from the package\n" + "device-mapper-persistent-data.\n") + +cfg(global_thin_dump_executable_CFG, "thin_dump_executable", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, THIN_DUMP_CMD, vsn(2, 2, 100), + "The full path to the thin_dump command.\n" + "LVM uses this command to dump thin pool metadata.\n" + "(For thin tools, see thin_check_executable.)\n") + +cfg(global_thin_repair_executable_CFG, "thin_repair_executable", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, THIN_REPAIR_CMD, vsn(2, 2, 100), + "The full path to the thin_repair command.\n" + "LVM uses this command to repair a thin metadata device\n" + "if it is in an unusable state.\n" + "Also see thin_repair_options.\n" + "(For thin tools, see thin_check_executable.)\n") cfg_array(global_thin_check_options_CFG, "thin_check_options", global_CFG_SECTION, 0, CFG_TYPE_STRING, "#S" DEFAULT_THIN_CHECK_OPTIONS, vsn(2, 2, 96), - "Array of string options passed with thin_check command. By default,\n" - "option -q is for quiet output.\n" - "With thin_check version 2.1 or newer you can add --ignore-non-fatal-errors\n" - "to let it pass through ignorable errors and fix them later.\n" - "With thin_check version 3.2 or newer you should add --clear-needs-check-flag.\n") + "String of options passed to the thin_check command.\n" + "With thin_check version 2.1 or newer you can add\n" + "--ignore-non-fatal-errors to let it pass through\n" + "ignorable errors and fix them later.\n" + "With thin_check version 3.2 or newer you should add\n" + "--clear-needs-check-flag.\n") + +cfg_array(global_thin_repair_options_CFG, "thin_repair_options", global_CFG_SECTION, 0, CFG_TYPE_STRING, "#S" DEFAULT_THIN_REPAIR_OPTIONS, vsn(2, 2, 100), + "String of options passed to the thin_repair command.\n") cfg_array(global_thin_disabled_features_CFG, "thin_disabled_features", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, NULL, vsn(2, 2, 99), - "The specified features are not used by thin driver.\n" - "This can be helpful not just for testing, but i.e. allows to avoid\n" - "using problematic implementation of some thin feature.\n" - "Features: block_size, discards, discards_non_power_2, external_origin,\n" - "metadata_resize, external_origin_extend, error_if_no_space.\n" + "Features to not use in the thin driver.\n" + "This can be helpful for testing, or to avoid\n" + "using a feature that is causing problems.\n" + "Features: block_size, discards, discards_non_power_2,\n" + "external_origin, metadata_resize, external_origin_extend,\n" + "error_if_no_space.\n" "Example:\n" "thin_disabled_features = [ \"discards\", \"block_size\" ]\n") -cfg(global_thin_dump_executable_CFG, "thin_dump_executable", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, THIN_DUMP_CMD, vsn(2, 2, 100), - "Full path of the utility called to dump thin metadata content.\n" - "See thin_check_executable how to obtain binaries.\n") - -cfg(global_thin_repair_executable_CFG, "thin_repair_executable", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, THIN_REPAIR_CMD, vsn(2, 2, 100), - "Full path of the utility called to repair a thin metadata device\n" - "is in a state that allows it to be used.\n" - "Each time a thin pool needs repair this utility is executed.\n" - "See thin_check_executable how to obtain binaries.\n") - -cfg_array(global_thin_repair_options_CFG, "thin_repair_options", global_CFG_SECTION, 0, CFG_TYPE_STRING, "#S" DEFAULT_THIN_REPAIR_OPTIONS, vsn(2, 2, 100), - "Array of extra string options passed with thin_repair command.\n") - cfg(global_cache_check_executable_CFG, "cache_check_executable", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, CACHE_CHECK_CMD, vsn(2, 2, 108), - "Full path of the utility called to check that a cache metadata device\n" - "is in a state that allows it to be used.\n" - "Each time a cached LV needs to be used or after it is deactivated\n" - "this utility is executed. The activation will only proceed if the utility\n" - "has an exit status of 0.\n" + "The full path to the cache_check command.\n" + "LVM uses this command to check that a cache metadata\n" + "device is in a usable state.\n" + "When a cached LV is activated and after it is deactivated,\n" + "this command is run. Activation will only proceed if the\n" + "command has an exit status of 0.\n" "Set to \"\" to skip this check. (Not recommended.)\n" - "The cache tools are available as part of the device-mapper-persistent-data\n" - "package from https://github.com/jthornber/thin-provisioning-tools.\n") - -cfg_array(global_cache_check_options_CFG, "cache_check_options", global_CFG_SECTION, 0, CFG_TYPE_STRING, "#S" DEFAULT_CACHE_CHECK_OPTIONS, vsn(2, 2, 108), - "Array of string options passed with cache_check command. By default,\n" - "option -q is for quiet output.\n") + "Also see cache_check_options.\n" + "The cache tools are available from the package\n" + "device-mapper-persistent-data.\n") cfg(global_cache_dump_executable_CFG, "cache_dump_executable", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, CACHE_DUMP_CMD, vsn(2, 2, 108), - "Full path of the utility called to dump cache metadata content.\n" - "See cache_check_executable how to obtain binaries.\n") + "The full path to the cache_dump command.\n" + "LVM uses this command to dump cache pool metadata.\n" + "(For cache tools, see cache_check_executable.)\n") cfg(global_cache_repair_executable_CFG, "cache_repair_executable", global_CFG_SECTION, CFG_ALLOW_EMPTY, CFG_TYPE_STRING, CACHE_REPAIR_CMD, vsn(2, 2, 108), - "Full path of the utility called to repair a cache metadata device.\n" - "Each time a cache metadata needs repair this utility is executed.\n" - "See cache_check_executable how to obtain binaries.\n") + "The full path to the cache_repair command.\n" + "LVM uses this command to repair a cache metadata device\n" + "if it is in an unusable state.\n" + "Also see cache_repair_options.\n" + "(For cache tools, see cache_check_executable.)\n") + +cfg_array(global_cache_check_options_CFG, "cache_check_options", global_CFG_SECTION, 0, CFG_TYPE_STRING, "#S" DEFAULT_CACHE_CHECK_OPTIONS, vsn(2, 2, 108), + "String of options passed to the cache_check command.\n") cfg_array(global_cache_repair_options_CFG, "cache_repair_options", global_CFG_SECTION, 0, CFG_TYPE_STRING, "#S" DEFAULT_CACHE_REPAIR_OPTIONS, vsn(2, 2, 108), - "Array of extra string options passed with cache_repair command.\n") + "String of options passed to the cache_repair command.\n") cfg(global_system_id_source_CFG, "system_id_source", global_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_SYSTEM_ID_SOURCE, vsn(2, 2, 117), - "The method lvm will use to set the system ID of the local host.\n" - "Volume Groups can also be given a system ID. A VG on shared storage\n" - "devices will be accessible only to the host with a matching system ID.\n" - "See 'man lvmsystemid' for information on limitations and correct usage.\n" + "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" @@ -856,174 +878,186 @@ cfg(global_system_id_source_CFG, "system_id_source", global_CFG_SECTION, 0, CFG_ "machineid - Use the contents of the file /etc/machine-id to set the\n" "system ID. Some systems create this file at installation time.\n" "See 'man machine-id'.\n" - "file - Use the contents of an alternative file (system_id_file) to\n" - "set the system ID.\n") + "file - Use the contents of another file (system_id_file) to set\n" + "the system ID.\n") cfg(global_system_id_file_CFG, "system_id_file", global_CFG_SECTION, CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(2, 2, 117), - "Full path of a file containing a system ID.\n" - "This is used when system_id_source is set to file.\n" + "The full path to the file containing a system ID.\n" + "This is used when system_id_source is set to 'file'.\n" "Comments starting with the character # are ignored.\n") cfg(activation_checks_CFG, "checks", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_ACTIVATION_CHECKS, vsn(2, 2, 86), - "Perform internal checks on the operations issued to\n" - "libdevmapper. Useful for debugging problems with activation.\n" - "Some of the checks may be expensive, so it's best to use this\n" - "only when there seems to be a problem.\n") + "Perform internal checks of libdevmapper operations.\n" + "Useful for debugging problems with activation.\n" + "Some of the checks may be expensive, so it's best to use\n" + "this only when there seems to be a problem.\n") cfg(activation_udev_sync_CFG, "udev_sync", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_UDEV_SYNC, vsn(2, 2, 51), - "Enable/disable udev synchronisation (if compiled into the binaries).\n" - "Processes will not wait for notification from udev.\n" - "They will continue irrespective of any possible udev processing\n" - "in the background. You should only use this if udev is not running\n" - "or has rules that ignore the devices LVM creates.\n" - "The command line argument --nodevsync takes precedence over this setting.\n" - "If enabled when udev is not running, and there are LVM processes\n" - "waiting for udev, run 'dmsetup udevcomplete_all' manually to wake them up.\n") + "Use udev notifications to synchronize udev and LVM.\n" + "When disabled, LVM commands will not wait for notifications\n" + "from udev, but continue irrespective of any possible udev\n" + "processing in the background. Only use this if udev is not\n" + "running or has rules that ignore the devices LVM creates.\n" + "If enabled when udev is not running, and LVM processes\n" + "are waiting for udev, run 'dmsetup udevcomplete_all' to\n" + "wake them up.\n" + "The '--nodevsync' option overrides this setting.\n") cfg(activation_udev_rules_CFG, "udev_rules", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_UDEV_RULES, vsn(2, 2, 57), - "Enable/disable the udev rules installed by LVM (if built with\n" - "--enable-udev_rules). LVM will then manage the /dev nodes and symlinks\n" - "for active logical volumes directly itself.\n" - "N.B. Manual intervention may be required if this setting is changed\n" - "while any logical volumes are active.\n") + "Use udev rules to manage LV device nodes and symlinks.\n" + "When disabled, LVM will manage the device nodes and\n" + "symlinks for active LVs itself.\n" + "Manual intervention may be required if this setting is\n" + "changed while LVs are active.\n") cfg(activation_verify_udev_operations_CFG, "verify_udev_operations", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_VERIFY_UDEV_OPERATIONS, vsn(2, 2, 86), - "Verify operations performed by udev. This turns on additional checks\n" - "(and if necessary, repairs) on entries in the device directory after udev\n" - "has completed processing its events.\n" + "Use extra checks in LVM to verify udev operations.\n" + "This enables additional checks (and if necessary,\n" + "repairs) on entries in the device directory after\n" + "udev has completed processing its events.\n" "Useful for diagnosing problems with LVM/udev interactions.\n") cfg(activation_retry_deactivation_CFG, "retry_deactivation", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_RETRY_DEACTIVATION, vsn(2, 2, 89), - "Retry deactivation operations for a few seconds before failing\n" - "if deactivation of an LV fails, perhaps because a process run\n" - "from a quick udev rule temporarily opened the device.\n") + "Retry failed LV deactivation.\n" + "If LV deactivation fails, LVM will retry for a few\n" + "seconds before failing. This may happen because a\n" + "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), - "How to fill in missing stripes if activating an incomplete volume.\n" + "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" - "case, that device will be used to in place of missing stripes.\n" - "But note that using anything other than 'error' with mirrored\n" - "or snapshotted volumes is likely to result in data corruption.\n") + "case, that device will be used in place of missing stripes.\n" + "Using anything other than 'error' with mirrored or snapshotted\n" + "volumes is likely to result in data corruption.\n") cfg(activation_use_linear_target_CFG, "use_linear_target", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_USE_LINEAR_TARGET, vsn(2, 2, 89), - "Enable/disable the linear target optimization.\n" - "When disabled, the striped target is used. The linear target is\n" - "an optimised version of the striped target that only handles a\n" - "single stripe.\n") + "Use the linear target to optimize single stripe LVs.\n" + "When disabled, the striped target is used. The linear\n" + "target is an optimised version of the striped target\n" + "that only handles a single stripe.\n") cfg(activation_reserved_stack_CFG, "reserved_stack", activation_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_RESERVED_STACK, vsn(1, 0, 0), - "How much stack (in KB) to reserve for use while devices suspended.\n" - "Prior to version 2.02.89 this used to be set to 256KB.\n") + "Stack size in KB to reserve for use while devices are suspended.\n") cfg(activation_reserved_memory_CFG, "reserved_memory", activation_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_RESERVED_MEMORY, vsn(1, 0, 0), - "How much memory (in KB) to reserve for use while devices suspended.\n") + "Memory size in KB to reserve for use while devices are suspended.\n") cfg(activation_process_priority_CFG, "process_priority", activation_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_PROCESS_PRIORITY, vsn(1, 0, 0), - "Nice value used while devices suspended.\n") + "Nice value used while devices are suspended.\n") 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), - "If volume_list is defined, each LV is only activated if there is a\n" - "match against the list.\n" - "vgname and vgname/lvname are matched exactly.\n" - "@tag matches any tag set in the LV or VG.\n" - "@* matches if any tag defined on the host is also set in the LV or VG.\n" - "If any host tags exist but volume_list is not defined, a default\n" - "single-entry list containing '@*' is assumed.\n" + "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" + "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" "Example:\n" "volume_list = [ \"vg1\", \"vg2/lvol1\", \"@tag1\", \"@*\" ]\n") 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), - "If auto_activation_volume_list is defined, each LV that is to be\n" - "activated with the autoactivation option (--activate ay/-a ay) is\n" - "first checked against the list. There are two scenarios in which\n" - "the autoactivation option is used:\n" - "1. automatic activation of volumes based on incoming PVs. If all the\n" - "PVs making up a VG are present in the system, the autoactivation\n" - "is triggered. This requires lvmetad (global/use_lvmetad=1) and udev\n" - "to be running. In this case, 'pvscan --cache -aay' is called\n" - "automatically without any user intervention while processing\n" - "udev events. Please, make sure you define auto_activation_volume_list\n" - "properly so only the volumes you want and expect are autoactivated.\n" - "2. direct activation on command line with the autoactivation option.\n" - "In this case, the user calls 'vgchange --activate ay/-a ay' or\n" - "'lvchange --activate ay/-a ay' directly.\n" - "By default, the auto_activation_volume_list is not defined and all\n" - "volumes will be activated either automatically or by using --activate ay/-a ay.\n" - "N.B. The activation/volume_list is still honoured in all cases so even\n" - "if the VG/LV passes the auto_activation_volume_list, it still needs to\n" - "pass the volume_list for it to be activated in the end.\n" - "If auto_activation_volume_list is defined but empty, no volumes will be\n" - "activated automatically and --activate ay/-a ay will do nothing.\n" - "Example:\n" - "auto_activation_volume_list = []\n" - "If auto_activation_volume_list is defined and it's not empty, only matching\n" - "volumes will be activated either automatically or by using --activate ay/-a ay.\n" - "vgname and vgname/lvname are matched exactly.\n" - "@tag matches any tag set in the LV or VG.\n" - "@* matches if any tag defined on the host is also set in the LV or VG.\n" - "Example:\n" - "auto_activation_volume_list = [ \"vg1\", \"vg2/lvol1\", \"@tag1\", \"@*\" ]\n") + "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") 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), - "If read_only_volume_list is defined, each LV that is to be activated\n" - "is checked against the list, and if it matches, it is activated\n" - "in read-only mode. (This overrides '--permission rw' stored in the\n" - "metadata.)\n" - "vgname and vgname/lvname are matched exactly.\n" - "@tag matches any tag set in the LV or VG.\n" - "@* matches if any tag defined on the host is also set in the LV or VG.\n" - "Example:\n" - "read_only_volume_list = [ \"vg1\", \"vg2/lvol1\", \"@tag1\", \"@*\" ]\n") + "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") -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) +cfg(activation_mirror_region_size_CFG, "mirror_region_size", activation_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_RAID_REGION_SIZE, vsn(1, 0, 0), + "This has been replaced by the activation/raid_region_size setting.\n") cfg(activation_raid_region_size_CFG, "raid_region_size", activation_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_RAID_REGION_SIZE, vsn(2, 2, 99), - "For RAID or 'mirror' segment types, raid_region_size is the\n" - "size (in KiB) of:\n" - "each synchronization operation when initializing, and\n" - "each copy operation when performing a pvmove (using 'mirror' segtype).\n" - "This setting has replaced mirror_region_size since version 2.02.99.\n") + "Size in KiB of each raid or mirror synchronization region.\n" + "For raid or mirror segment types, this is the amount of\n" + "data that is copied at once when initializing, or moved\n" + "at once by pvmove.\n") cfg(activation_error_when_full_CFG, "error_when_full", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_ERROR_WHEN_FULL, vsn(2, 2, 115), - "Control error behavior when provisioned device becomes full. This\n" - "determines the default --errorwhenfull setting of new thin pools.\n" - "The command line option --errorwhenfull takes precedence over this\n" - "setting. error_when_full disabled (0) means --errorwhenfull n.\n") + "Return errors if a thin pool runs out of space.\n" + "When enabled, writes to thin LVs immediately return\n" + "an error if the thin pool is out of data space.\n" + "When disabled, writes to thin LVs are queued if the\n" + "thin pool is out of space, and processed when the\n" + "thin pool data space is extended.\n" + "New thin pools are assigned the behavior defined here.\n" + "The '--errorwhenfull y|n' option overrides this setting.\n") cfg(activation_readahead_CFG, "readahead", activation_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_READ_AHEAD, vsn(1, 0, 23), - "Setting to use when there is no readahead value stored in the metadata.\n" + "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") cfg(activation_raid_fault_policy_CFG, "raid_fault_policy", activation_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_RAID_FAULT_POLICY, vsn(2, 2, 89), - "Defines how a device failure in a RAID logical volume is handled.\n" - "This includes logical volumes that have the following segment types:\n" + "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" - "In the event of a failure, the following policies will determine what\n" - "actions are performed during the automated response to failures (when\n" - "dmeventd is monitoring the RAID logical volume) and when 'lvconvert' is\n" - "called manually with the options '--repair' and '--use-policies'.\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" + "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 in the RAID\n" - "logical volume has failed. It is left to the user to run\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 logical volume will remain usable.\n" - "allocate - Attempt to use any extra physical volumes in the volume\n" - "group as spares and replace faulty devices.\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") cfg_runtime(activation_mirror_image_fault_policy_CFG, "mirror_image_fault_policy", activation_CFG_SECTION, 0, CFG_TYPE_STRING, vsn(2, 2, 57), - "Defines how a device failure affecting a mirror (of 'mirror' segment type) is\n" - "handled. A mirror is composed of mirror images (copies) and a log.\n" - "A disk log ensures that a mirror does not need to be re-synced\n" - "(all copies made the same) every time a machine reboots or crashes.\n" - "In the event of a failure, the specified policy will be used to determine\n" - "what happens. This applies to automatic repairs (when the mirror is being\n" - "monitored by dmeventd) and to manual lvconvert --repair when\n" - "--use-policies is given.\n" + "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" + "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" @@ -1032,8 +1066,8 @@ cfg_runtime(activation_mirror_image_fault_policy_CFG, "mirror_image_fault_policy "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 on\n" - "a new device to be a replacement for the failed device.\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" @@ -1041,130 +1075,149 @@ cfg_runtime(activation_mirror_image_fault_policy_CFG, "mirror_image_fault_policy "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 the log device\n" - "temporarily on same physical volume as one of the mirror\n" - "images. This policy is not recommended for mirror devices\n" - "since it would break the redundant nature of the mirror. This\n" - "policy acts like 'remove' if no suitable device and space can\n" - "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") 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), - "The description of mirror_image_fault_policy also applies to this setting.\n") + "Defines how a device failure in a 'mirror' log LV is handled.\n" + "The mirror_image_fault_policy description for mirrored LVs\n" + "also applies to mirrored log LVs.\n") cfg(activation_mirror_device_fault_policy_CFG, "mirror_device_fault_policy", activation_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_MIRROR_DEVICE_FAULT_POLICY, vsn(1, 2, 10), - "This setting has been replaced by the mirror_image_fault_policy setting.\n") + "This has been replaced by the mirror_image_fault_policy setting.\n") cfg(activation_snapshot_autoextend_threshold_CFG, "snapshot_autoextend_threshold", activation_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_SNAPSHOT_AUTOEXTEND_THRESHOLD, vsn(2, 2, 75), - "Defines when a snapshot should be automatically extended.\n" - "When its space usage exceeds the percent set here, it is\n" - "extended. Setting this to 100 disables automatic extension.\n" - "The minimum value is 50 (a setting below 50 will be treated as 50.)\n") + "Auto-extend a snapshot when its usage exceeds this percent.\n" + "Setting this to 100 disables automatic extension.\n" + "The minimum value is 50 (a smaller value is treated as 50.)\n" + "Also see snapshot_autoextend_percent.\n" + "Automatic extension requires dmeventd to be monitoring the LV.\n" + "Example:\n" + "With snapshot_autoextend_threshold 70 and\n" + "snapshot_autoextend_percent 20, whenever a snapshot\n" + "exceeds 70% usage, it will be extended by another 20%.\n" + "For a 1G snapshot, using 700M will trigger a resize to 1.2G.\n" + "When the usage exceeds 840M, the snapshot will be extended\n" + "to 1.44G, and so on.\n") cfg(activation_snapshot_autoextend_percent_CFG, "snapshot_autoextend_percent", activation_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_SNAPSHOT_AUTOEXTEND_PERCENT, vsn(2, 2, 75), - "Defines how much extra space should be allocated for a snapshot\n" - "when it is automatically extended, as a percent of its current size.\n" - "Example:\n" - "With snapshot_autoextend_threshold 70 and snapshot_autoextend_percent 20,\n" - "whenever a snapshot exceeds 70% usage, it will be extended by another 20%.\n" - "For a 1G snapshot, using up 700M will trigger a resize to 1.2G.\n" - "When the usage exceeds 840M, the snapshot will be extended to 1.44G,\n" - "and so on.\n") + "Auto-extending a snapshot adds this percent extra space.\n" + "The amount of additional space added to a snapshot is this\n" + "percent of its current size.\n" + "Also see snapshot_autoextend_threshold.\n") cfg(activation_thin_pool_autoextend_threshold_CFG, "thin_pool_autoextend_threshold", activation_CFG_SECTION, CFG_PROFILABLE | CFG_PROFILABLE_METADATA, CFG_TYPE_INT, DEFAULT_THIN_POOL_AUTOEXTEND_THRESHOLD, vsn(2, 2, 89), - "Defines when a thin pool should be automatically extended.\n" - "When its space usage exceeds the percent set here, it is\n" - "extended. Setting this to 100 disables automatic extension.\n" - "The minimum value is 50 (a setting below 50 will be treated as 50.)\n") + "Auto-extend a thin pool when its usage exceeds this percent.\n" + "Setting this to 100 disables automatic extension.\n" + "The minimum value is 50 (a smaller value is treated as 50.)\n" + "Also see thin_pool_autoextend_percent.\n" + "Automatic extension requires dmeventd to be monitoring the LV.\n" + "Example:\n" + "With thin_pool_autoextend_threshold 70 and\n" + "thin_pool_autoextend_percent 20, whenever a thin pool\n" + "exceeds 70% usage, it will be extended by another 20%.\n" + "For a 1G thin pool, using up 700M will trigger a resize to 1.2G.\n" + "When the usage exceeds 840M, the thin pool will be extended\n" + "to 1.44G, and so on.\n") cfg(activation_thin_pool_autoextend_percent_CFG, "thin_pool_autoextend_percent", activation_CFG_SECTION, CFG_PROFILABLE | CFG_PROFILABLE_METADATA, CFG_TYPE_INT, DEFAULT_THIN_POOL_AUTOEXTEND_PERCENT, vsn(2, 2, 89), - "Defines how much extra space should be allocated for a thin pool\n" - "when it is automatically extended, as a percent of its current size.\n" - "Example:\n" - "With thin_pool_autoextend_threshold 70 and thin_pool_autoextend_percent 20,\n" - "whenever a thin pool exceeds 70% usage, it will be extended by another 20%.\n" - "For a 1G thin pool, using up 700M will trigger a resize to 1.2G.\n" - "When the usage exceeds 840M, the thin pool will be extended to 1.44G,\n" - "and so on.\n") + "Auto-extending a thin pool adds this percent extra space.\n" + "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), - "While activating devices, I/O to devices being (re)configured is\n" - "suspended, and as a precaution against deadlocks, LVM needs to pin\n" - "any memory it is using so it is not paged out. Groups of pages that\n" - "are known not to be accessed during activation need not be pinned\n" - "into memory. Each string listed in this setting is compared against\n" - "each line in /proc/self/maps, and the pages corresponding to any\n" - "lines that match are not pinned. On some systems locale-archive was\n" - "found to make up over 80% of the memory used by the process.\n" + "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" + "deadlocks, LVM pins memory it is using so it is not\n" + "paged out, and will not require I/O to reread.\n" + "Groups of pages that are known not to be accessed during\n" + "activation do not need to be pinned into memory.\n" + "Each string listed in this setting is compared against\n" + "each line in /proc/self/maps, and the pages corresponding\n" + "to lines that match are not pinned. On some systems,\n" + "locale-archive was found to make up over 80% of the memory\n" + "used by the process.\n" "Example:\n" "mlock_filter = [ \"locale/locale-archive\", \"gconv/gconv-modules.cache\" ]\n") cfg(activation_use_mlockall_CFG, "use_mlockall", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_USE_MLOCKALL, vsn(2, 2, 62), - "Enable to revert to the default behaviour prior to version 2.02.62 which\n" - "used mlockall() to pin the whole process's memory while activating devices.\n") + "Use the old behavior of mlockall to pin all memory.\n" + "Prior to version 2.02.62, LVM used mlockall() to pin\n" + "the whole process's memory while activating devices.\n") cfg(activation_monitoring_CFG, "monitoring", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_DMEVENTD_MONITOR, vsn(2, 2, 63), - "Enable/disable monitoring when activating logical volumes.\n" - "Disabling can also be done with the --ignoremonitoring option.\n") + "Monitor LVs that are activated.\n" + "When enabled, LVM will ask dmeventd to monitor LVs\n" + "that are activated.\n" + "The '--ignoremonitoring' option overrides this setting.\n") cfg(activation_polling_interval_CFG, "polling_interval", activation_CFG_SECTION, 0, CFG_TYPE_INT, DEFAULT_INTERVAL, vsn(2, 2, 63), + "Check pvmove or lvconvert progress at this interval (seconds)\n" "When pvmove or lvconvert must wait for the kernel to finish\n" "synchronising or merging data, they check and report progress\n" "at intervals of this number of seconds.\n" - "If this is set to 0 and there is only one thing to wait for, there\n" - "are no progress reports, but the process is awoken immediately the\n" - "operation is complete.\n") + "If this is set to 0 and there is only one thing to wait for,\n" + "there are no progress reports, but the process is awoken\n" + "immediately once the operation is complete.\n") cfg(activation_auto_set_activation_skip_CFG, "auto_set_activation_skip", activation_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_AUTO_SET_ACTIVATION_SKIP, vsn(2,2,99), - "Each LV can have an 'activation skip' flag stored persistently against it.\n" - "During activation, this flag is used to decide whether such an LV is skipped.\n" - "The 'activation skip' flag can be set during LV creation and by default it\n" - "is automatically set for thin snapshot LVs. The auto_set_activation_skip\n" - "enables or disables this automatic setting of the flag while LVs are created.\n") + "Set the activation skip flag on new thin snapshot LVs.\n" + "An LV can have a persistent 'activation skip' flag.\n" + "The flag determines if the LV is skipped during activation.\n" + "When this setting is enabled, the activation skip flag is\n" + "set on new thin snapshot LVs.\n") cfg(activation_mode_CFG, "activation_mode", activation_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_ACTIVATION_MODE, vsn(2,2,108), - "Determines how Logical Volumes are activated if any devices are missing.\n" + "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 the Physical Volumes\n" - "it uses are present. Other PVs in the Volume Group may be missing.\n" - "degraded - Like complete, but additionally RAID Logical Volumes of\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 Logical Volume even if\n" - "a missing or failed PV could cause data loss with a\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" - "This setting corresponds with the --activationmode option for\n" - "lvchange and vgchange.\n") + "The '--activationmode' option overrides this setting.\n") cfg(metadata_pvmetadatacopies_CFG, "pvmetadatacopies", metadata_CFG_SECTION, CFG_ADVANCED, CFG_TYPE_INT, DEFAULT_PVMETADATACOPIES, vsn(1, 0, 0), - "Default number of copies of metadata to hold on each PV. 0, 1 or 2.\n" - "You might want to override it from the command line with 0\n" - "when running pvcreate on new PVs which are to be added to large VGs.\n") + "Number of copies of metadata to store on each PV.\n" + "Possible options are: 0, 1, 2.\n" + "You may want to override this from the command line\n" + "with 0 when running pvcreate on new PVs which are to\n" + "be added to large VGs.\n") cfg(metadata_vgmetadatacopies_CFG, "vgmetadatacopies", metadata_CFG_SECTION, CFG_ADVANCED, CFG_TYPE_INT, DEFAULT_VGMETADATACOPIES, vsn(2, 2, 69), - "Default number of copies of metadata to maintain for each VG.\n" + "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" "number of copies of the VG metadata. If you set a value larger\n" - "than the the total number of metadata areas available then\n" + "than the the total number of metadata areas available, then\n" "metadata is stored in them all.\n" - "The default value of 0 (unmanaged) disables this automatic\n" - "management and allows you to control which metadata areas\n" - "are used at the individual PV level using 'pvchange metadataignore y/n'.\n") + "The value 0 (unmanaged) disables this automatic management\n" + "and allows you to control which metadata areas are used at\n" + "the individual PV level using 'pvchange --metadataignore y|n'.\n") cfg(metadata_pvmetadatasize_CFG, "pvmetadatasize", metadata_CFG_SECTION, CFG_ADVANCED, CFG_TYPE_INT, DEFAULT_PVMETADATASIZE, vsn(1, 0, 0), "Approximate default size of on-disk metadata areas in sectors.\n" - "You should increase this if you have large volume groups or\n" - "you want to retain a large on-disk history of your metadata changes.\n") + "Increase this if you have large volume groups or you want to\n" + "retain a large on-disk history of your metadata changes.\n") cfg(metadata_pvmetadataignore_CFG, "pvmetadataignore", metadata_CFG_SECTION, CFG_ADVANCED, CFG_TYPE_BOOL, DEFAULT_PVMETADATAIGNORE, vsn(2, 2, 69), NULL) cfg(metadata_stripesize_CFG, "stripesize", metadata_CFG_SECTION, CFG_ADVANCED, CFG_TYPE_INT, DEFAULT_STRIPESIZE, vsn(1, 0, 0), NULL) cfg_array(metadata_dirs_CFG, "dirs", metadata_CFG_SECTION, CFG_ADVANCED | CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(1, 0, 0), - "List of directories holding live copies of text format metadata.\n" + "Directories holding live copies of text format metadata.\n" "These directories must not be on logical volumes!\n" "It's possible to use LVM with a couple of directories here,\n" "preferably on different (non-LV) filesystems, and with no other\n" @@ -1193,6 +1246,7 @@ cfg(report_aligned_CFG, "aligned", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_ "Align columns on report output.\n") cfg(report_buffered_CFG, "buffered", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_BOOL, DEFAULT_REP_BUFFERED, vsn(1, 0, 0), + "Buffer report output.\n" "When buffered reporting is used, the report's content is appended\n" "incrementally to include each object being reported until the report\n" "is flushed to output which normally happens at the end of command\n" @@ -1215,87 +1269,89 @@ cfg(report_quoted_CFG, "quoted", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_BO "Quote field values when using field name prefixes.\n") cfg(report_colums_as_rows_CFG, "colums_as_rows", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_BOOL, DEFAULT_REP_COLUMNS_AS_ROWS, vsn(1, 0, 0), - "Output each column as a row. If set, this also implies report/prefixes=1.\n") + "Output each column as a row.\n" + "If set, this also implies report/prefixes=1.\n") cfg(report_binary_values_as_numeric_CFG, "binary_values_as_numeric", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_BOOL, 0, vsn(2, 2, 108), - "Use binary values 0 or 1 instead of descriptive literal values for\n" - "columns that have exactly two valid values to report (not counting the\n" - "'unknown' value which denotes that the value could not be determined).\n") + "Use binary values 0 or 1 instead of descriptive literal values.\n" + "For columns that have exactly two valid values to report\n" + "(not counting the 'unknown' value which denotes that the\n" + "value could not be determined).\n") cfg(report_devtypes_sort_CFG, "devtypes_sort", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_DEVTYPES_SORT, vsn(2, 2, 101), - "Comma separated list of columns to sort by when reporting 'lvm devtypes' command.\n" + "List of columns to sort by when reporting 'lvm devtypes' command.\n" "See 'lvm devtypes -o help' for the list of possible fields.\n") cfg(report_devtypes_cols_CFG, "devtypes_cols", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_DEVTYPES_COLS, vsn(2, 2, 101), - "Comma separated list of columns to report for 'lvm devtypes' command.\n" + "List of columns to report for 'lvm devtypes' command.\n" "See 'lvm devtypes -o help' for the list of possible fields.\n") cfg(report_devtypes_cols_verbose_CFG, "devtypes_cols_verbose", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_DEVTYPES_COLS_VERB, vsn(2, 2, 101), - "Comma separated list of columns to report for 'lvm devtypes' command in verbose mode.\n" + "List of columns to report for 'lvm devtypes' command in verbose mode.\n" "See 'lvm devtypes -o help' for the list of possible fields.\n") cfg(report_lvs_sort_CFG, "lvs_sort", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_LVS_SORT, vsn(1, 0, 0), - "Comma separated list of columns to sort by when reporting 'lvs' command.\n" + "List of columns to sort by when reporting 'lvs' command.\n" "See 'lvs -o help' for the list of possible fields.\n") cfg(report_lvs_cols_CFG, "lvs_cols", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_LVS_COLS, vsn(1, 0, 0), - "Comma separated list of columns to report for 'lvs' command.\n" + "List of columns to report for 'lvs' command.\n" "See 'lvs -o help' for the list of possible fields.\n") cfg(report_lvs_cols_verbose_CFG, "lvs_cols_verbose", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_LVS_COLS_VERB, vsn(1, 0, 0), - "Comma separated list of columns to report for 'lvs' command in verbose mode.\n" + "List of columns to report for 'lvs' command in verbose mode.\n" "See 'lvs -o help' for the list of possible fields.\n") cfg(report_vgs_sort_CFG, "vgs_sort", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_VGS_SORT, vsn(1, 0, 0), - "Comma separated list of columns to sort by when reporting 'vgs' command.\n" + "List of columns to sort by when reporting 'vgs' command.\n" "See 'vgs -o help' for the list of possible fields.\n") cfg(report_vgs_cols_CFG, "vgs_cols", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_VGS_COLS, vsn(1, 0, 0), - "Comma separated list of columns to report for 'vgs' command.\n" + "List of columns to report for 'vgs' command.\n" "See 'vgs -o help' for the list of possible fields.\n") cfg(report_vgs_cols_verbose_CFG, "vgs_cols_verbose", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_VGS_COLS_VERB, vsn(1, 0, 0), - "Comma separated list of columns to report for 'vgs' command in verbose mode.\n" + "List of columns to report for 'vgs' command in verbose mode.\n" "See 'vgs -o help' for the list of possible fields.\n") cfg(report_pvs_sort_CFG, "pvs_sort", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_PVS_SORT, vsn(1, 0, 0), - "Comma separated list of columns to sort by when reporting 'pvs' command.\n" + "List of columns to sort by when reporting 'pvs' command.\n" "See 'pvs -o help' for the list of possible fields.\n") cfg(report_pvs_cols_CFG, "pvs_cols", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_PVS_COLS, vsn(1, 0, 0), - "Comma separated list of columns to report for 'pvs' command.\n" + "List of columns to report for 'pvs' command.\n" "See 'pvs -o help' for the list of possible fields.\n") cfg(report_pvs_cols_verbose_CFG, "pvs_cols_verbose", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_PVS_COLS_VERB, vsn(1, 0, 0), - "Comma separated list of columns to report for 'pvs' command in verbose mode.\n" + "List of columns to report for 'pvs' command in verbose mode.\n" "See 'pvs -o help' for the list of possible fields.\n") cfg(report_segs_sort_CFG, "segs_sort", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_SEGS_SORT, vsn(1, 0, 0), - "Comma separated list of columns to sort by when reporting 'lvs --segments' command.\n" + "List of columns to sort by when reporting 'lvs --segments' command.\n" "See 'lvs --segments -o help' for the list of possible fields.\n") cfg(report_segs_cols_CFG, "segs_cols", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_SEGS_COLS, vsn(1, 0, 0), - "Comma separated list of columns to report for 'lvs --segments' command.\n" + "List of columns to report for 'lvs --segments' command.\n" "See 'lvs --segments -o help' for the list of possible fields.\n") cfg(report_segs_cols_verbose_CFG, "segs_cols_verbose", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_SEGS_COLS_VERB, vsn(1, 0, 0), - "Comma separated list of columns to report for 'lvs --segments' command in verbose mode.\n" + "List of columns to report for 'lvs --segments' command in verbose mode.\n" "See 'lvs --segments -o help' for the list of possible fields.\n") cfg(report_pvsegs_sort_CFG, "pvsegs_sort", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_PVSEGS_SORT, vsn(1, 1, 3), - "Comma separated list of columns to sort by when reporting 'pvs --segments' command.\n" + "List of columns to sort by when reporting 'pvs --segments' command.\n" "See 'pvs --segments -o help' for the list of possible fields.\n") cfg(report_pvsegs_cols_CFG, "pvsegs_cols", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_PVSEGS_COLS, vsn(1, 1, 3), - "Comma separated list of columns to sort by when reporting 'pvs --segments' command.\n" + "List of columns to sort by when reporting 'pvs --segments' command.\n" "See 'pvs --segments -o help' for the list of possible fields.\n") cfg(report_pvsegs_cols_verbose_CFG, "pvsegs_cols_verbose", report_CFG_SECTION, CFG_PROFILABLE, CFG_TYPE_STRING, DEFAULT_PVSEGS_COLS_VERB, vsn(1, 1, 3), - "Comma separated list of columns to sort by when reporting 'pvs --segments' command in verbose mode.\n" + "List of columns to sort by when reporting 'pvs --segments' command in verbose mode.\n" "See 'pvs --segments -o help' for the list of possible fields.\n") cfg(dmeventd_mirror_library_CFG, "mirror_library", dmeventd_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_DMEVENTD_MIRROR_LIB, vsn(1, 2, 3), - "The library used when monitoring a mirror device.\n" + "The library dmeventd uses when monitoring a mirror device.\n" "libdevmapper-event-lvm2mirror.so attempts to recover from\n" "failures. It removes failed devices from a volume group and\n" "reconfigures a mirror as necessary. If no mirror library is\n" @@ -1304,21 +1360,21 @@ cfg(dmeventd_mirror_library_CFG, "mirror_library", dmeventd_CFG_SECTION, 0, CFG_ cfg(dmeventd_raid_library_CFG, "raid_library", dmeventd_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_DMEVENTD_RAID_LIB, vsn(2, 2, 87), NULL) cfg(dmeventd_snapshot_library_CFG, "snapshot_library", dmeventd_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_DMEVENTD_SNAPSHOT_LIB, vsn(1, 2, 26), - "The library used when monitoring a snapshot device.\n" + "The library dmeventd uses when monitoring a snapshot device.\n" "libdevmapper-event-lvm2snapshot.so monitors the filling of\n" - "snapshots and emits a warning through syslog when the use of\n" - "the snapshot exceeds 80%. The warning is repeated when 85%, 90% and\n" + "snapshots and emits a warning through syslog when the usage\n" + "exceeds 80%. The warning is repeated when 85%, 90% and\n" "95% of the snapshot is filled.\n") cfg(dmeventd_thin_library_CFG, "thin_library", dmeventd_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_DMEVENTD_THIN_LIB, vsn(2, 2, 89), - "The library used when monitoring a thin device.\n" + "The library dmeventd uses when monitoring a thin device.\n" "libdevmapper-event-lvm2thin.so monitors the filling of\n" - "pool and emits a warning through syslog when the use of\n" - "the pool exceeds 80%. The warning is repeated when 85%, 90% and\n" + "a pool and emits a warning through syslog when the usage\n" + "exceeds 80%. The warning is repeated when 85%, 90% and\n" "95% of the pool is filled.\n") cfg(dmeventd_executable_CFG, "executable", dmeventd_CFG_SECTION, 0, CFG_TYPE_STRING, DEFAULT_DMEVENTD_PATH, vsn(2, 2, 73), - "Full path of the dmeventd binary.\n") + "The full path to the dmeventd binary.\n") cfg(tags_hosttags_CFG, "hosttags", tags_CFG_SECTION, 0, CFG_TYPE_BOOL, DEFAULT_HOSTTAGS, vsn(1, 0, 18), NULL) @@ -1326,11 +1382,13 @@ cfg_section(tag_CFG_SUBSECTION, "tag", tags_CFG_SECTION, CFG_NAME_VARIABLE | CFG cfg(tag_host_list_CFG, "host_list", tag_CFG_SUBSECTION, CFG_ALLOW_EMPTY | CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(1, 0, 18), NULL) cfg(local_system_id_CFG, "system_id", local_CFG_SECTION, CFG_ALLOW_EMPTY | CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(2, 2, 117), - "Defines the system ID of the local host. This is used\n" - "when global/system_id_source is set to 'lvmlocal' in the main\n" - "configuration file, e.g. lvm.conf.\n" - "When used, it must be set to a unique value - often a hostname -\n" - "across all the hosts sharing access to the storage.\n" + "Defines the local system ID for lvmlocal mode.\n" + "This is used when global/system_id_source is set\n" + "to 'lvmlocal' in the main configuration file,\n" + "e.g. lvm.conf.\n" + "When used, it must be set to a unique value\n" + "among all hosts sharing access to the storage,\n" + "e.g. a host name.\n" "Example:\n" "Set no system ID.\n" "system_id = \"\"\n" @@ -1339,10 +1397,13 @@ cfg(local_system_id_CFG, "system_id", local_CFG_SECTION, CFG_ALLOW_EMPTY | CFG_D "system_id = \"host1\"\n") cfg_array(local_extra_system_ids_CFG, "extra_system_ids", local_CFG_SECTION, CFG_ALLOW_EMPTY | CFG_DEFAULT_UNDEFINED, CFG_TYPE_STRING, NULL, vsn(2, 2, 117), - "Defines a list of extra system_ids other than the local\n" - "system_id that the local host is allowed to access. These are\n" - "used for all values of global/system_id_source except 'none'.\n" - "Only use this if you have read 'man lvmsystemid' and you are sure\n" - "you understand why you need to use it!\n") + "A list of extra VG system IDs the local host can access.\n" + "VGs with the system IDs listed here (in addition\n" + "to the host's own system ID) can be fully accessed\n" + "by the local host. (These are system IDs that the\n" + "host sees in VGs, not system IDs that identify the\n" + "local host, which is determined by system_id_source.)\n" + "Use this only after consulting 'man lvmsystemid'\n" + "to be certain of correct usage and possible dangers.\n") cfg(CFG_COUNT, NULL, root_CFG_SECTION, 0, CFG_TYPE_INT, 0, vsn(0, 0, 0), NULL)