1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

conf: add metadata/check_pv_device_sizes

This commit is contained in:
Peter Rajnoha 2016-01-22 13:20:21 +01:00
parent c0912af310
commit 136fd8f2f6
6 changed files with 25 additions and 1 deletions

View File

@ -1,5 +1,6 @@
Version 2.02.141 - Version 2.02.141 -
==================================== ====================================
Add metadata/check_pv_device_sizes switch to lvm.conf for device size checks.
Warn if device size is less than corresponding PV size in metadata. Warn if device size is less than corresponding PV size in metadata.
Cache device sizes internally. Cache device sizes internally.
Restore support for command breaking in process_each_lv_in_vg() (2.02.118). Restore support for command breaking in process_each_lv_in_vg() (2.02.118).

View File

@ -1415,6 +1415,17 @@ activation {
# This configuration section has an automatic default value. # This configuration section has an automatic default value.
# metadata { # metadata {
# Configuration option metadata/check_pv_device_sizes.
# Check device sizes are not smaller than corresponding PV sizes.
# If device size is less than corresponding PV size found in metadata,
# there is always a risk of data loss. If this option is set, then LVM
# issues a warning message each time it finds that the device size is
# less than corresponding PV size. You should not disable this unless
# you are absolutely sure about what you are doing!
# This configuration option is advanced.
# This configuration option has an automatic default value.
# check_pv_device_sizes = 1
# Configuration option metadata/pvmetadatacopies. # Configuration option metadata/pvmetadatacopies.
# Number of copies of metadata to store on each PV. # Number of copies of metadata to store on each PV.
# The --pvmetadatacopies option overrides this setting. # The --pvmetadatacopies option overrides this setting.

View File

@ -670,6 +670,8 @@ static int _process_config(struct cmd_context *cmd)
/* LVM stores sizes internally in units of 512-byte sectors. */ /* LVM stores sizes internally in units of 512-byte sectors. */
init_pv_min_size((uint64_t)pv_min_kb * (1024 >> SECTOR_SHIFT)); init_pv_min_size((uint64_t)pv_min_kb * (1024 >> SECTOR_SHIFT));
cmd->check_pv_dev_sizes = find_config_tree_bool(cmd, metadata_check_pv_device_sizes_CFG, NULL);
if (!process_profilable_config(cmd)) if (!process_profilable_config(cmd))
return_0; return_0;

View File

@ -113,6 +113,7 @@ struct cmd_context {
* Switches. * Switches.
*/ */
unsigned is_long_lived:1; /* optimises persistent_filter handling */ unsigned is_long_lived:1; /* optimises persistent_filter handling */
unsigned check_pv_dev_sizes:1;
unsigned handles_missing_pvs:1; unsigned handles_missing_pvs:1;
unsigned handles_unknown_segments:1; unsigned handles_unknown_segments:1;
unsigned use_linear_target:1; unsigned use_linear_target:1;

View File

@ -1352,6 +1352,14 @@ cfg_array(activation_auto_lock_start_list_CFG, "auto_lock_start_list", activatio
"Locking is auto-started only for VGs selected by this list.\n" "Locking is auto-started only for VGs selected by this list.\n"
"The rules are the same as those for auto_activation_volume_list.\n") "The rules are the same as those for auto_activation_volume_list.\n")
cfg(metadata_check_pv_device_sizes_CFG, "check_pv_device_sizes", metadata_CFG_SECTION, CFG_ADVANCED | CFG_DEFAULT_COMMENTED, CFG_TYPE_BOOL, 1, vsn(2, 2, 141), NULL, 0, NULL,
"Check device sizes are not smaller than corresponding PV sizes.\n"
"If device size is less than corresponding PV size found in metadata,\n"
"there is always a risk of data loss. If this option is set, then LVM\n"
"issues a warning message each time it finds that the device size is\n"
"less than corresponding PV size. You should not disable this unless\n"
"you are absolutely sure about what you are doing!\n")
cfg(metadata_pvmetadatacopies_CFG, "pvmetadatacopies", metadata_CFG_SECTION, CFG_ADVANCED | CFG_DEFAULT_COMMENTED, CFG_TYPE_INT, DEFAULT_PVMETADATACOPIES, vsn(1, 0, 0), NULL, 0, NULL, cfg(metadata_pvmetadatacopies_CFG, "pvmetadatacopies", metadata_CFG_SECTION, CFG_ADVANCED | CFG_DEFAULT_COMMENTED, CFG_TYPE_INT, DEFAULT_PVMETADATACOPIES, vsn(1, 0, 0), NULL, 0, NULL,
"Number of copies of metadata to store on each PV.\n" "Number of copies of metadata to store on each PV.\n"
"The --pvmetadatacopies option overrides this setting.\n" "The --pvmetadatacopies option overrides this setting.\n"

View File

@ -672,7 +672,8 @@ static int _check_pv_dev_sizes(struct volume_group *vg)
uint64_t dev_size, size; uint64_t dev_size, size;
int r = 1; int r = 1;
if (is_orphan_vg(vg->name)) if (!vg->cmd->check_pv_dev_sizes ||
is_orphan_vg(vg->name))
return 1; return 1;
dm_list_iterate_items(pvl, &vg->pvs) { dm_list_iterate_items(pvl, &vg->pvs) {