Module Name:    src
Committed By:   haad
Date:           Thu Dec 23 21:39:09 UTC 2010

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

Log Message:
Change way how we get device size from device. Do not use LSEEK but
DIOCGWEDGEINFO and DIOCGDINFO. This should fix problem with raidframe + lvm
reported by

Toby Karyadi on current-us...@.

Thanks for reporting this issue.


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 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.7 src/external/gpl2/lvm2/dist/lib/device/dev-io.c:1.8
--- src/external/gpl2/lvm2/dist/lib/device/dev-io.c:1.7	Thu Dec 23 14:46:25 2010
+++ src/external/gpl2/lvm2/dist/lib/device/dev-io.c	Thu Dec 23 21:39:08 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: dev-io.c,v 1.7 2010/12/23 14:46:25 mlelstv Exp $	*/
+/*	$NetBSD: dev-io.c,v 1.8 2010/12/23 21:39:08 haad Exp $	*/
 
 /*
  * Copyright (C) 2001-2004 Sistina Software, Inc. All rights reserved.
@@ -275,26 +275,20 @@
 		log_sys_error("open", name);
 #endif		
 		return 0;
-		}
-
-#ifdef __NetBSD__
-	if ((*size = lseek (fd, 0, SEEK_END)) < 0) {
-		log_sys_error("lseek SEEK_END", name);
-		close(fd);
-		return 0;
 	}
 
-	if (ioctl(fd, DIOCGDINFO, &lab) < 0) {
-		if (ioctl(fd, DIOCGWEDGEINFO, &dkw) < 0) {
-			log_debug("ioctl DIOCGWEDGEINFO", name);
+#ifdef __NetBSD__
+        /* Get info about partition/wedge */
+	if (ioctl(fd, DIOCGWEDGEINFO, &dkw) == -1) {
+		if (ioctl(fd, DIOCGDINFO, &lab) == -1) {
+			log_debug("Please implement DIOCGWEDGEINFO or "
+			    "DIOCGDINFO for disk device %s", name);
 			close(fd);
 			return 0;
 		} else
-			if (dkw.dkw_size)
-				*size = dkw.dkw_size;
-	} else 
-		if (lab.d_secsize)
 			*size /= lab.d_secsize;
+	} else
+		*size = dkw.dkw_size;
 #else
 	if (ioctl(fd, BLKGETSIZE64, size) < 0) {
 		log_sys_error("ioctl BLKGETSIZE64", name);

Reply via email to