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 <prajnoha@redhat.com> - 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 <prajnoha@redhat.com> - 7:2.02.130-5.el7_2.4
 - Fix flushing for mirror target.