[lvm-devel] dev-io.c: give a better diagnostic upon failed stat

Jim Meyering jim at meyering.net
Fri Sep 7 10:36:04 UTC 2007


The main change here is to report strerror(errno) upon stat failure:
i.e., the s/log_error/log_sys_error/ part.  Also made the "device changed"
diagnostic more definite.  Ok to commit?

    Use log_sys_error after failed stat to report strerror(errno).
    Use a slightly different diagnostic to report mismatched device number.

---
 lib/device/dev-io.c |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/lib/device/dev-io.c b/lib/device/dev-io.c
index 9406903..54ae88e 100644
--- a/lib/device/dev-io.c
+++ b/lib/device/dev-io.c
@@ -359,10 +359,15 @@ int dev_open_flags(struct device *dev, int flags, int direct, int quiet)
 		return 0;
 	}

-	if (!(dev->flags & DEV_REGULAR) &&
-	    ((stat(name, &buf) < 0) || (buf.st_rdev != dev->dev))) {
-		log_error("%s: stat failed: Has device name changed?", name);
-		return 0;
+	if (!(dev->flags & DEV_REGULAR)) {
+		if (stat(name, &buf) < 0) {
+			log_sys_error("%s: stat failed", name);
+			return 0;
+		}
+		if (buf.st_rdev != dev->dev) {
+			log_error("%s: device changed", name);
+			return 0;
+		}
 	}

 #ifdef O_DIRECT_SUPPORT




More information about the lvm-devel mailing list