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