This is the mail archive of the lvm2-cvs@sourceware.org mailing list for the LVM2 project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

LVM2/lib/device dev-md.c device.c


CVSROOT:	/cvs/lvm2
Module name:	LVM2
Changes by:	snitzer@sourceware.org	2009-08-01 17:14:52

Modified files:
	lib/device     : dev-md.c device.c 

Log message:
	Fix error handling of device-related stat() calls to be ENOENT aware.
	
	Signed-off-by: Mike Snitzer <snitzer@redhat.com>

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/device/dev-md.c.diff?cvsroot=lvm2&r1=1.17&r2=1.18
http://sourceware.org/cgi-bin/cvsweb.cgi/LVM2/lib/device/device.c.diff?cvsroot=lvm2&r1=1.31&r2=1.32

--- LVM2/lib/device/dev-md.c	2009/08/01 17:11:02	1.17
+++ LVM2/lib/device/dev-md.c	2009/08/01 17:14:52	1.18
@@ -151,7 +151,11 @@
 		return ret;
 	}
 
-	if (stat(path, &info) < 0) {
+	if (stat(path, &info) == -1) {
+		if (errno != ENOENT) {
+			log_sys_error("stat", path);
+			return ret;
+		}
 		/* old sysfs structure */
 		ret = dm_snprintf(path, size, "%s/block/md%d/md/%s",
 				  sysfs_dir, (int)MINOR(dev), attribute);
--- LVM2/lib/device/device.c	2009/08/01 17:11:02	1.31
+++ LVM2/lib/device/device.c	2009/08/01 17:14:52	1.32
@@ -304,8 +304,11 @@
 		return ret;
 	}
 
-	if (stat(path, &info) < 0)
+	if (stat(path, &info) == -1) {
+		if (errno != ENOENT)
+			log_sys_error("stat", path);
 		return ret;
+	}
 
 	/*
 	 * extract parent's path from the partition's symlink, e.g.:
@@ -326,8 +329,11 @@
 	}
 
 	/* finally, parse 'dev' attribute and create corresponding dev_t */
-	if (stat(path, &info) < 0) {
-		log_error("sysfs file %s does not exist", path);
+	if (stat(path, &info) == -1) {
+		if (errno == ENOENT)
+			log_error("sysfs file %s does not exist", path);
+		else
+			log_sys_error("stat", path);
 		return ret;
 	}
 
@@ -386,7 +392,11 @@
 	 * - if not: either the kernel doesn't have topology support
 	 *   or the device could be a partition
 	 */
-	if (stat(path, &info) < 0) {
+	if (stat(path, &info) == -1) {
+		if (errno != ENOENT) {
+			log_sys_error("stat", path);
+			return 0;
+		}
 		if (!get_primary_dev(sysfs_dir, dev, &primary))
 			return 0;
 
@@ -397,8 +407,11 @@
 			log_error("primary dm_snprintf %s failed", attribute);
 			return 0;
 		}
-		if (stat(path, &info) < 0)
+		if (stat(path, &info) == -1) {
+			if (errno != ENOENT)
+				log_sys_error("stat", path);
 			return 0;
+		}
 	}
 
 	if (!(fp = fopen(path, "r"))) {


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]