Module Name:    src
Committed By:   haad
Date:           Wed Dec 29 23:14:21 UTC 2010

Modified Files:
        src/external/gpl2/lvm2/dist/lib/device: dev-io.c

Log Message:
Fix my yesterday fix and finally make _get_dev_size recognise partition size
for device without DIOWEDGEINFO, where DIOCGDINFO is used. Patch tested by
Martin Mersberger.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 src/external/gpl2/lvm2/dist/lib/device/dev-io.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/gpl2/lvm2/dist/lib/device/dev-io.c
diff -u src/external/gpl2/lvm2/dist/lib/device/dev-io.c:1.9 src/external/gpl2/lvm2/dist/lib/device/dev-io.c:1.10
--- src/external/gpl2/lvm2/dist/lib/device/dev-io.c:1.9	Wed Dec 29 00:14:04 2010
+++ src/external/gpl2/lvm2/dist/lib/device/dev-io.c	Wed Dec 29 23:14:21 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: dev-io.c,v 1.9 2010/12/29 00:14:04 haad Exp $	*/
+/*	$NetBSD: dev-io.c,v 1.10 2010/12/29 23:14:21 haad Exp $	*/
 
 /*
  * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
@@ -268,6 +268,7 @@
 #ifdef __NetBSD__
 	struct disklabel	lab;
 	struct dkwedge_info     dkw;
+	struct stat stat;
 #endif
 
 	if ((fd = open(name, O_RDONLY)) < 0) {
@@ -285,8 +286,12 @@
 			    "DIOCGDINFO for disk device %s", name);
 			close(fd);
 			return 0;
-		} else
-			*size = lab.d_nsectors;
+		} else {
+			if (fstat(fd, &stat) < 0)
+				log_debug("fstat on device %s failure", name);
+			
+			*size = lab.d_partitions[DISKPART(stat.st_rdev)].p_size;
+		}
 	} else
 		*size = dkw.dkw_size;
 #else

Reply via email to