From a9ef5a9c3e0a7e87b75e8e4d48903ff396506918 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Jun 28 2016 15:05:49 +0000 Subject: import lvm2-2.02.130-5.el7_2.5 --- diff --git a/SOURCES/lvm2-2_02_131-fix-devices-filter-to-be-applied-before-disk-accessing-filters.patch b/SOURCES/lvm2-2_02_131-fix-devices-filter-to-be-applied-before-disk-accessing-filters.patch new file mode 100644 index 0000000..ac09dee --- /dev/null +++ b/SOURCES/lvm2-2_02_131-fix-devices-filter-to-be-applied-before-disk-accessing-filters.patch @@ -0,0 +1,137 @@ + WHATS_NEW | 1 + + lib/commands/toolcontext.c | 64 +++++++++++++++++++++++++++------------------- + 2 files changed, 39 insertions(+), 26 deletions(-) + +diff --git a/WHATS_NEW b/WHATS_NEW +index 6441cc1..0e77789 100644 +--- a/WHATS_NEW ++++ b/WHATS_NEW +@@ -16,6 +16,7 @@ Version 2.02.133 - + + Version 2.02.131 - + ===================================== ++ Fix devices/filter to be applied before disk-accessing filters. (2.02.112) + Fix vgimportclone cache_dir path name (2.02.115). + Disallow usage of --stripe and --stripesize when creating cache pool. + Swapping of LV identifiers handles more complex LVs. +diff --git a/lib/commands/toolcontext.c b/lib/commands/toolcontext.c +index 11affee..c8d96ca 100644 +--- a/lib/commands/toolcontext.c ++++ b/lib/commands/toolcontext.c +@@ -1069,7 +1069,7 @@ static struct dev_filter *_init_lvmetad_filter_chain(struct cmd_context *cmd) + nr_filt++; + } + +- /* regex filter. Optional. */ ++ /* global regex filter. Optional. */ + if ((cn = find_config_tree_node(cmd, devices_global_filter_CFG, NULL))) { + if (!(filters[nr_filt] = regex_filter_create(cn->v))) { + log_error("Failed to create global regex device filter"); +@@ -1078,6 +1078,17 @@ static struct dev_filter *_init_lvmetad_filter_chain(struct cmd_context *cmd) + nr_filt++; + } + ++ /* regex filter. Optional. */ ++ if (!lvmetad_used()) { ++ if ((cn = find_config_tree_node(cmd, devices_filter_CFG, NULL))) { ++ if (!(filters[nr_filt] = regex_filter_create(cn->v))) { ++ log_error("Failed to create regex device filter"); ++ goto bad; ++ } ++ nr_filt++; ++ } ++ } ++ + /* device type filter. Required. */ + if (!(filters[nr_filt] = lvm_type_filter_create(cmd->dev_types))) { + log_error("Failed to create lvm type filter"); +@@ -1145,26 +1156,24 @@ bad: + * md component filter -> fw raid filter + * + * - cmd->filter - the filter chain used for lvmetad responses: +- * persistent filter -> usable device filter(FILTER_MODE_POST_LVMETAD) -> +- * regex filter ++ * persistent filter -> regex_filter -> usable device filter(FILTER_MODE_POST_LVMETAD) + * + * - cmd->full_filter - the filter chain used for all the remaining situations: +- * lvmetad_filter -> filter ++ * cmd->lvmetad_filter -> cmd->filter + * +- * If lvmetad isnot used, there's just one filter chain: ++ * If lvmetad is not used, there's just one filter chain: + * + * - cmd->filter == cmd->full_filter: +- * persistent filter -> regex filter -> sysfs filter -> +- * global regex filter -> type filter -> +- * usable device filter(FILTER_MODE_NO_LVMETAD) -> +- * mpath component filter -> partitioned filter -> +- * md component filter -> fw raid filter ++ * persistent filter -> sysfs filter -> global regex filter -> ++ * regex_filter -> type filter -> usable device filter(FILTER_MODE_NO_LVMETAD) -> ++ * mpath component filter -> partitioned filter -> md component filter -> fw raid filter + * + */ + int init_filters(struct cmd_context *cmd, unsigned load_persistent_cache) + { + const char *dev_cache; + struct dev_filter *filter = NULL, *filter_components[2] = {0}; ++ int nr_filt; + struct stat st; + const struct dm_config_node *cn; + struct timespec ts, cts; +@@ -1193,26 +1202,26 @@ int init_filters(struct cmd_context *cmd, unsigned load_persistent_cache) + */ + /* filter component 0 */ + if (lvmetad_used()) { +- if (!(filter_components[0] = usable_filter_create(cmd->dev_types, FILTER_MODE_POST_LVMETAD))) { ++ nr_filt = 0; ++ if ((cn = find_config_tree_array(cmd, devices_filter_CFG, NULL))) { ++ if (!(filter_components[nr_filt] = regex_filter_create(cn->v))) { ++ log_verbose("Failed to create regex device filter."); ++ goto bad; ++ } ++ nr_filt++; ++ } ++ if (!(filter_components[nr_filt] = usable_filter_create(cmd->dev_types, FILTER_MODE_POST_LVMETAD))) { + log_verbose("Failed to create usable device filter."); + goto bad; + } ++ nr_filt++; ++ if (!(filter = composite_filter_create(nr_filt, 0, filter_components))) ++ goto_bad; + } else { +- filter_components[0] = cmd->lvmetad_filter; ++ filter = cmd->lvmetad_filter; + cmd->lvmetad_filter = NULL; + } + +- /* filter component 1 */ +- if ((cn = find_config_tree_array(cmd, devices_filter_CFG, NULL))) { +- if (!(filter_components[1] = regex_filter_create(cn->v))) +- goto_bad; +- /* we have two filter components - create composite filter */ +- if (!(filter = composite_filter_create(2, 0, filter_components))) +- goto_bad; +- } else +- /* we have only one filter component - no need to create composite filter */ +- filter = filter_components[0]; +- + if (!(dev_cache = find_config_tree_str(cmd, devices_cache_CFG, NULL))) + goto_bad; + +@@ -1224,9 +1233,12 @@ int init_filters(struct cmd_context *cmd, unsigned load_persistent_cache) + cmd->filter = filter; + + if (lvmetad_used()) { +- filter_components[0] = cmd->lvmetad_filter; +- filter_components[1] = cmd->filter; +- if (!(cmd->full_filter = composite_filter_create(2, 0, filter_components))) ++ nr_filt = 0; ++ filter_components[nr_filt] = cmd->lvmetad_filter; ++ nr_filt++; ++ filter_components[nr_filt] = cmd->filter; ++ nr_filt++; ++ if (!(cmd->full_filter = composite_filter_create(nr_filt, 0, filter_components))) + goto_bad; + } else + cmd->full_filter = filter; diff --git a/SPECS/lvm2.spec b/SPECS/lvm2.spec index 6f8761c..7e93790 100644 --- a/SPECS/lvm2.spec +++ b/SPECS/lvm2.spec @@ -52,7 +52,7 @@ Summary: Userland logical volume management tools Name: lvm2 Epoch: 7 Version: 2.02.130 -Release: 5%{?dist}.4 +Release: 5%{?dist}.5 License: GPLv2 Group: System Environment/Base URL: http://sources.redhat.com/lvm2 @@ -76,6 +76,7 @@ Patch15: lvm2-2_02_135-fix-resize-of-full-thin-pool-causing-data-loss.patch Patch16: lvm2-2_02_142-do-not-check-for-suspended-devices-if-scanning-for-lvmetad-update.patch Patch17: lvm2-2_02_140-restore-background-polling-processing-during-auto-activation.patch Patch18: lvm2-2_02_155-fix-flushing-for-mirror-target.patch +Patch19: lvm2-2_02_131-fix-devices-filter-to-be-applied-before-disk-accessing-filters.patch BuildRequires: libselinux-devel >= %{libselinux_version}, libsepol-devel BuildRequires: libblkid-devel >= %{util_linux_version} @@ -140,6 +141,7 @@ or more physical volumes and creating one or more logical volumes %patch16 -p1 -b .susp_devs_lvmetad_update %patch17 -p1 -b .background_polling_auto_activation %patch18 -p1 -b .flushing_mirror +%patch19 -p1 -b .fix_filter_order %build %define _default_pid_dir /run @@ -838,6 +840,9 @@ the device-mapper event library. %{_libdir}/pkgconfig/devmapper-event.pc %changelog +* Tue Jun 14 2016 Peter Rajnoha - 7:2.02.130-5.el7_2.5 +- Fix devices/filter to be applied before disk-accessing filters. (2.02.112) + * Thu Jun 09 2016 Peter Rajnoha - 7:2.02.130-5.el7_2.4 - Fix flushing for mirror target.