diff --git a/SOURCES/2.25-libblkid-thinpool.patch b/SOURCES/2.25-libblkid-thinpool.patch
new file mode 100644
index 0000000..0e5e565
--- /dev/null
+++ b/SOURCES/2.25-libblkid-thinpool.patch
@@ -0,0 +1,227 @@
+diff -up util-linux-2.23.2/fdisks/fdisk.c.kzak util-linux-2.23.2/fdisks/fdisk.c
+--- util-linux-2.23.2/fdisks/fdisk.c.kzak	2013-07-30 10:39:26.195738131 +0200
++++ util-linux-2.23.2/fdisks/fdisk.c	2015-07-03 10:30:50.378965526 +0200
+@@ -34,6 +34,7 @@
+ #include "canonicalize.h"
+ #include "strutils.h"
+ #include "closestream.h"
++#include "sysfs.h"
+ 
+ #include "fdisksunlabel.h"
+ #include "fdisksgilabel.h"
+diff -up util-linux-2.23.2/include/sysfs.h.kzak util-linux-2.23.2/include/sysfs.h
+--- util-linux-2.23.2/include/sysfs.h.kzak	2013-06-13 09:46:10.400650451 +0200
++++ util-linux-2.23.2/include/sysfs.h	2015-07-03 10:30:50.378965526 +0200
+@@ -73,6 +73,8 @@ extern int sysfs_is_partition_dirent(DIR
+ extern int sysfs_devno_to_wholedisk(dev_t dev, char *diskname,
+             size_t len, dev_t *diskdevno);
+ 
++extern int sysfs_devno_is_lvm_private(dev_t devno);
++
+ extern int sysfs_scsi_get_hctl(struct sysfs_cxt *cxt, int *h,
+ 			       int *c, int *t, int *l);
+ extern char *sysfs_scsi_host_strdup_attribute(struct sysfs_cxt *cxt,
+diff -up util-linux-2.23.2/libblkid/src/blkidP.h.kzak util-linux-2.23.2/libblkid/src/blkidP.h
+--- util-linux-2.23.2/libblkid/src/blkidP.h.kzak	2015-07-03 10:29:08.582688645 +0200
++++ util-linux-2.23.2/libblkid/src/blkidP.h	2015-07-03 10:30:50.378965526 +0200
+@@ -221,6 +221,7 @@ struct blkid_struct_probe
+ #define BLKID_FL_PRIVATE_FD	(1 << 1)	/* see blkid_new_probe_from_filename() */
+ #define BLKID_FL_TINY_DEV	(1 << 2)	/* <= 1.47MiB (floppy or so) */
+ #define BLKID_FL_CDROM_DEV	(1 << 3)	/* is a CD/DVD drive */
++#define BLKID_FL_NOSCAN_DEV	(1 << 4)        /* do not scan this device */
+ 
+ /* private per-probing flags */
+ #define BLKID_PROBE_FL_IGNORE_PT (1 << 1)	/* ignore partition table */
+diff -up util-linux-2.23.2/libblkid/src/partitions/partitions.c.kzak util-linux-2.23.2/libblkid/src/partitions/partitions.c
+--- util-linux-2.23.2/libblkid/src/partitions/partitions.c.kzak	2015-07-03 10:29:08.582688645 +0200
++++ util-linux-2.23.2/libblkid/src/partitions/partitions.c	2015-07-03 10:30:50.378965526 +0200
+@@ -537,6 +537,8 @@ static int idinfo_probe(blkid_probe pr,
+ 
+ 	if (pr->size <= 0 || (id->minsz && id->minsz > pr->size))
+ 		goto nothing;	/* the device is too small */
++	if (pr->flags & BLKID_FL_NOSCAN_DEV)
++		goto nothing;
+ 
+ 	rc = blkid_probe_get_idmag(pr, id, &off, &mag);
+ 	if (rc != BLKID_PROBE_OK)
+@@ -576,8 +578,12 @@ static int partitions_probe(blkid_probe
+ 
+ 	if (!pr || chn->idx < -1)
+ 		return -EINVAL;
++
+ 	blkid_probe_chain_reset_vals(pr, chn);
+ 
++	if (pr->flags & BLKID_FL_NOSCAN_DEV)
++		return BLKID_PROBE_NONE;
++
+ 	if (chn->binary)
+ 		partitions_init_data(chn);
+ 
+@@ -653,6 +659,8 @@ int blkid_partitions_do_subprobe(blkid_p
+ 
+ 	if (!pr || !parent || !parent->size)
+ 		return -EINVAL;
++	if (pr->flags & BLKID_FL_NOSCAN_DEV)
++		return BLKID_PROBE_NONE;
+ 
+ 	/* range defined by parent */
+ 	sz = ((blkid_loff_t) parent->size) << 9;
+@@ -707,6 +715,9 @@ static int blkid_partitions_probe_partit
+ 	blkid_partition par;
+ 	dev_t devno;
+ 
++	if (pr->flags & BLKID_FL_NOSCAN_DEV)
++		goto nothing;
++
+ 	devno = blkid_probe_get_devno(pr);
+ 	if (!devno)
+ 		goto nothing;
+@@ -779,7 +790,7 @@ nothing:
+ int blkid_probe_is_covered_by_pt(blkid_probe pr,
+ 				 blkid_loff_t offset, blkid_loff_t size)
+ {
+-	blkid_probe prc;
++	blkid_probe prc = NULL;
+ 	blkid_partlist ls = NULL;
+ 	blkid_loff_t start, end;
+ 	int nparts, i, rc = 0;
+@@ -788,6 +799,9 @@ int blkid_probe_is_covered_by_pt(blkid_p
+ 		"=> checking if off=%jd size=%jd covered by PT",
+ 		offset, size));
+ 
++	if (pr->flags & BLKID_FL_NOSCAN_DEV)
++		goto done;
++
+ 	prc = blkid_clone_probe(pr);
+ 	if (!prc)
+ 		goto done;
+diff -up util-linux-2.23.2/libblkid/src/probe.c.kzak util-linux-2.23.2/libblkid/src/probe.c
+--- util-linux-2.23.2/libblkid/src/probe.c.kzak	2015-07-03 10:29:08.583688638 +0200
++++ util-linux-2.23.2/libblkid/src/probe.c	2015-07-03 10:30:50.378965526 +0200
+@@ -110,6 +110,7 @@
+ 
+ #include "blkidP.h"
+ #include "all-io.h"
++#include "sysfs.h"
+ 
+ /* chains */
+ extern const struct blkid_chaindrv superblocks_drv;
+@@ -714,8 +715,13 @@ int blkid_probe_set_device(blkid_probe p
+ 	if (pr->size <= 1440 * 1024 && !S_ISCHR(sb.st_mode))
+ 		pr->flags |= BLKID_FL_TINY_DEV;
+ 
++	if (S_ISBLK(sb.st_mode) && sysfs_devno_is_lvm_private(sb.st_rdev)) {
++		DBG(LOWPROBE, blkid_debug("ignore private LVM device"));
++		pr->flags |= BLKID_FL_NOSCAN_DEV;
++        }
++
+ #ifdef CDROM_GET_CAPABILITY
+-	if (S_ISBLK(sb.st_mode) &&
++	else if (S_ISBLK(sb.st_mode) &&
+ 	    !blkid_probe_is_tiny(pr) &&
+ 	    blkid_probe_is_wholedisk(pr) &&
+ 	    ioctl(fd, CDROM_GET_CAPABILITY, NULL) >= 0)
+@@ -892,6 +898,9 @@ int blkid_do_probe(blkid_probe pr)
+ 	if (!pr)
+ 		return -1;
+ 
++	if (pr->flags & BLKID_FL_NOSCAN_DEV)
++		return 1;
++
+ 	do {
+ 		struct blkid_chain *chn = pr->cur_chain;
+ 
+@@ -1143,6 +1152,8 @@ int blkid_do_safeprobe(blkid_probe pr)
+ 
+ 	if (!pr)
+ 		return -1;
++	if (pr->flags & BLKID_FL_NOSCAN_DEV)
++		return 1;
+ 
+ 	blkid_probe_start(pr);
+ 
+@@ -1197,6 +1208,8 @@ int blkid_do_fullprobe(blkid_probe pr)
+ 
+ 	if (!pr)
+ 		return -1;
++	if (pr->flags & BLKID_FL_NOSCAN_DEV)
++		return 1;
+ 
+ 	blkid_probe_start(pr);
+ 
+diff -up util-linux-2.23.2/libblkid/src/superblocks/superblocks.c.kzak util-linux-2.23.2/libblkid/src/superblocks/superblocks.c
+--- util-linux-2.23.2/libblkid/src/superblocks/superblocks.c.kzak	2015-07-03 10:29:08.586688617 +0200
++++ util-linux-2.23.2/libblkid/src/superblocks/superblocks.c	2015-07-03 10:30:50.378965526 +0200
+@@ -335,6 +335,9 @@ static int superblocks_probe(blkid_probe
+ 
+ 	if (!pr || chn->idx < -1)
+ 		return -EINVAL;
++	if (pr->flags & BLKID_FL_NOSCAN_DEV)
++		goto nothing;
++
+ 	blkid_probe_chain_reset_vals(pr, chn);
+ 
+ 	DBG(LOWPROBE, blkid_debug("--> starting probing loop [SUBLKS idx=%d]",
+@@ -450,6 +453,9 @@ static int superblocks_safeprobe(blkid_p
+ 	int intol = 0;
+ 	int rc;
+ 
++	if (pr->flags & BLKID_FL_NOSCAN_DEV)
++		return 1;				/* nothing */
++
+ 	while ((rc = superblocks_probe(pr, chn)) == 0) {
+ 
+ 		if (blkid_probe_is_tiny(pr) && !count)
+diff -up util-linux-2.23.2/libblkid/src/verify.c.kzak util-linux-2.23.2/libblkid/src/verify.c
+--- util-linux-2.23.2/libblkid/src/verify.c.kzak	2013-06-13 09:46:10.429650699 +0200
++++ util-linux-2.23.2/libblkid/src/verify.c	2015-07-03 10:30:50.378965526 +0200
+@@ -112,6 +112,10 @@ blkid_dev blkid_verify(blkid_cache cache
+ 		   (unsigned long)diff));
+ #endif
+ 
++	if (sysfs_devno_is_lvm_private(st.st_rdev)) {
++		blkid_free_dev(dev);
++		return NULL;
++	}
+ 	if (!cache->probe) {
+ 		cache->probe = blkid_new_probe();
+ 		if (!cache->probe) {
+diff -up util-linux-2.23.2/lib/sysfs.c.kzak util-linux-2.23.2/lib/sysfs.c
+--- util-linux-2.23.2/lib/sysfs.c.kzak	2013-06-13 09:46:10.410650536 +0200
++++ util-linux-2.23.2/lib/sysfs.c	2015-07-03 10:32:32.953236879 +0200
+@@ -638,6 +638,35 @@ err:
+     return -1;
+ }
+ 
++/*
++ * Returns 1 if the device is private LVM device.
++ */
++int sysfs_devno_is_lvm_private(dev_t devno)
++{
++	struct sysfs_cxt cxt = UL_SYSFSCXT_EMPTY;
++	char *uuid = NULL;
++	int rc = 0;
++
++	if (sysfs_init(&cxt, devno, NULL) != 0)
++		return 0;
++
++	uuid = sysfs_strdup(&cxt, "dm/uuid");
++
++	/* Private LVM devices use "LVM-<uuid>-<name>" uuid format (important
++	 * is the "LVM" prefix and "-<name>" postfix).
++	 */
++	if (uuid && strncmp(uuid, "LVM-", 4) == 0) {
++		char *p = strrchr(uuid + 4, '-');
++
++		if (p && *(p + 1))
++			rc = 1;
++	}
++
++	sysfs_deinit(&cxt);
++	free(uuid);
++	return rc;
++}
++
+ 
+ int sysfs_scsi_get_hctl(struct sysfs_cxt *cxt, int *h, int *c, int *t, int *l)
+ {
diff --git a/SPECS/util-linux.spec b/SPECS/util-linux.spec
index 141d236..ee7c34d 100644
--- a/SPECS/util-linux.spec
+++ b/SPECS/util-linux.spec
@@ -2,7 +2,7 @@
 Summary: A collection of basic system utilities
 Name: util-linux
 Version: 2.23.2
-Release: 22%{?dist}
+Release: 22%{?dist}.1
 License: GPLv2 and GPLv2+ and LGPLv2+ and BSD with advertising and Public Domain
 Group: System Environment/Base
 URL: http://en.wikipedia.org/wiki/Util-linux
@@ -167,9 +167,11 @@ Patch42: 2.26-blkdiscard.patch
 Patch43: 2.26-raw-stat.patch
 
 #
-# RHEL 7.2
+# RHEL 7.1.Z
 #
 Patch44: 2.25-uuidd-timeout.patch
+# 1238678 - os-prober attempts to mount thin pool devices
+Patch45: 2.25-libblkid-thinpool.patch
 
 
 %description
@@ -888,6 +890,9 @@ fi
 %{_libdir}/pkgconfig/uuid.pc
 
 %changelog
+* Fri Jul  3 2015 Karel Zak <kzak@redhat.com> 2.23.2-22.el7_1.1
+- fix #1238678 - os-prober attempts to mount thin pool devices
+
 * Mon Apr 20 2015 Karel Zak <kzak@redhat.com> 2.23.2-22
 - fix #1092039 - uuidd not configured to run permanently