diff -Naur LVM2.2.02.72.orig/lib/device/dev-io.c LVM2.2.02.72/lib/device/dev-io.c
--- LVM2.2.02.72.orig/lib/device/dev-io.c	2010-07-09 11:34:42.000000000 -0400
+++ LVM2.2.02.72/lib/device/dev-io.c	2010-08-12 09:24:36.000000000 -0400
@@ -271,7 +271,7 @@
 		return 1;
 	}
 
-	if (!dev_open(dev))
+	if (!dev_open_flags(dev, O_RDONLY, 1, 0))
 		return_0;
 
 	if (ioctl(dev->fd, BLKRAGET, &read_ahead_long) < 0) {
diff -Naur LVM2.2.02.72.orig/lib/device/dev-md.c LVM2.2.02.72/lib/device/dev-md.c
--- LVM2.2.02.72.orig/lib/device/dev-md.c	2010-07-09 11:34:42.000000000 -0400
+++ LVM2.2.02.72/lib/device/dev-md.c	2010-08-12 08:46:55.000000000 -0400
@@ -94,7 +94,7 @@
 	if (size < MD_RESERVED_SECTORS * 2)
 		return 0;
 
-	if (!dev_open(dev)) {
+	if (!dev_open_flags(dev, O_RDONLY, 1, 0)) {
 		stack;
 		return -1;
 	}
diff -Naur LVM2.2.02.72.orig/lib/device/dev-swap.c LVM2.2.02.72/lib/device/dev-swap.c
--- LVM2.2.02.72.orig/lib/device/dev-swap.c	2009-03-17 10:40:00.000000000 -0400
+++ LVM2.2.02.72/lib/device/dev-swap.c	2010-08-12 09:25:56.000000000 -0400
@@ -49,7 +49,7 @@
 		return -1;
 	}
 
-	if (!dev_open(dev)) {
+	if (!dev_open_flags(dev, O_RDONLY, 1, 0)) {
 		stack;
 		return -1;
 	}
diff -Naur LVM2.2.02.72.orig/lib/format1/disk-rep.c LVM2.2.02.72/lib/format1/disk-rep.c
--- LVM2.2.02.72.orig/lib/format1/disk-rep.c	2010-07-09 11:34:44.000000000 -0400
+++ LVM2.2.02.72/lib/format1/disk-rep.c	2010-08-12 09:29:08.000000000 -0400
@@ -415,7 +415,7 @@
 {
 	struct disk_list *dl;
 
-	if (!dev_open(dev))
+	if (!dev_open_flags(dev, O_RDONLY, 1, 0))
 		return_NULL;
 
 	dl = __read_disk(fmt, dev, mem, vg_name);
diff -Naur LVM2.2.02.72.orig/lib/format_pool/disk_rep.c LVM2.2.02.72/lib/format_pool/disk_rep.c
--- LVM2.2.02.72.orig/lib/format_pool/disk_rep.c	2010-07-09 11:34:44.000000000 -0400
+++ LVM2.2.02.72/lib/format_pool/disk_rep.c	2010-08-12 09:01:04.000000000 -0400
@@ -350,7 +350,7 @@
 {
 	struct pool_list *pl;
 
-	if (!dev_open(dev))
+	if (!dev_open_flags(dev, O_RDONLY, 1, 0))
 		return_NULL;
 
 	if (!(pl = dm_pool_zalloc(mem, sizeof(*pl)))) {
diff -Naur LVM2.2.02.72.orig/lib/format_text/format-text.c LVM2.2.02.72/lib/format_text/format-text.c
--- LVM2.2.02.72.orig/lib/format_text/format-text.c	2010-07-09 11:34:44.000000000 -0400
+++ LVM2.2.02.72/lib/format_text/format-text.c	2010-08-12 09:15:48.000000000 -0400
@@ -189,7 +189,7 @@
 		  PRIu64, mdac->area.start, mdac->area.size);
 	area = &mdac->area;
 
-	if (!dev_open(area->dev))
+	if (!dev_open_flags(area->dev, O_RDONLY, 1, 0))
 		return_0;
 
 	if (!(mdah = raw_read_mda_header(fmt, area)))
@@ -467,7 +467,7 @@
 	int noprecommit = 0;
 	struct mda_header *mdah;
 
-	if (!dev_open(dev_area->dev))
+	if (!dev_open_flags(dev_area->dev, O_RDONLY, 1, 0))
 		return_0;
 
 	if (!(mdah = raw_read_mda_header(fid->fmt, dev_area)))
@@ -538,7 +538,7 @@
 	struct mda_context *mdac = (struct mda_context *) mda->metadata_locn;
 	struct volume_group *vg;
 
-	if (!dev_open(mdac->area.dev))
+	if (!dev_open_flags(mdac->area.dev, O_RDONLY, 1, 0))
 		return_NULL;
 
 	vg = _vg_read_raw_area(fid, vgname, &mdac->area, 0);
@@ -556,7 +556,7 @@
 	struct mda_context *mdac = (struct mda_context *) mda->metadata_locn;
 	struct volume_group *vg;
 
-	if (!dev_open(mdac->area.dev))
+	if (!dev_open_flags(mdac->area.dev, O_RDONLY, 1, 0))
 		return_NULL;
 
 	vg = _vg_read_raw_area(fid, vgname, &mdac->area, 1);
@@ -1213,7 +1213,7 @@
 
 	dm_list_iterate_items(rl, raw_list) {
 		/* FIXME We're reading mdah twice here... */
-		if (!dev_open(rl->dev_area.dev)) {
+		if (!dev_open_flags(rl->dev_area.dev, O_RDONLY, 1, 0)) {
 			stack;
 			continue;
 		}
diff -Naur LVM2.2.02.72.orig/lib/format_text/text_label.c LVM2.2.02.72/lib/format_text/text_label.c
--- LVM2.2.02.72.orig/lib/format_text/text_label.c	2010-07-09 11:34:44.000000000 -0400
+++ LVM2.2.02.72/lib/format_text/text_label.c	2010-08-12 09:05:07.000000000 -0400
@@ -302,7 +302,7 @@
 
 	dm_list_iterate_items(mda, &info->mdas) {
 		mdac = (struct mda_context *) mda->metadata_locn;
-		if (!dev_open(mdac->area.dev)) {
+		if (!dev_open_flags(mdac->area.dev, O_RDONLY, 1, 0)) {
 			mda_set_ignored(mda, 1);
 			stack;
 			continue;
diff -Naur LVM2.2.02.72.orig/lib/label/label.c LVM2.2.02.72/lib/label/label.c
--- LVM2.2.02.72.orig/lib/label/label.c	2010-07-09 11:34:44.000000000 -0400
+++ LVM2.2.02.72/lib/label/label.c	2010-08-12 08:57:08.000000000 -0400
@@ -272,7 +272,7 @@
 		return 1;
 	}
 
-	if (!dev_open(dev)) {
+	if (!dev_open_flags(dev, O_RDONLY, 1, 0)) {
 		stack;
 
 		if ((info = info_from_pvid(dev->pvid, 0)))
@@ -352,7 +352,7 @@
 	struct lvmcache_info *info;
 	int r = 0;
 
-	if (!dev_open(dev)) {
+	if (!dev_open_flags(dev, O_RDONLY, 1, 0)) {
 		if ((info = info_from_pvid(dev->pvid, 0)))
 			lvmcache_update_vgname_and_id(info, info->fmt->orphan_vg_name,
 						      info->fmt->orphan_vg_name,
diff -Naur LVM2.2.02.72.orig/tools/lvmdiskscan.c LVM2.2.02.72/tools/lvmdiskscan.c
--- LVM2.2.02.72.orig/tools/lvmdiskscan.c	2010-07-09 11:34:48.000000000 -0400
+++ LVM2.2.02.72/tools/lvmdiskscan.c	2010-08-12 09:32:27.000000000 -0400
@@ -72,7 +72,7 @@
 	char buffer;
 	uint64_t size;
 
-	if (!dev_open(dev)) {
+	if (!dev_open_flags(dev, O_RDONLY, 1, 0)) {
 		return 0;
 	}
 	if (!dev_read(dev, UINT64_C(0), (size_t) 1, &buffer)) {
