changeset 2913:700e2211dfb7

6479646 inuse checking of zpool components by format is no longer working
author yl194034
date Fri, 13 Oct 2006 00:37:29 -0700
parents 85ea316d9c18
children 266e6e5b5218
files usr/src/lib/libefi/common/rdwr_efi.c
diffstat 1 files changed, 8 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/lib/libefi/common/rdwr_efi.c	Thu Oct 12 22:44:10 2006 -0700
+++ b/usr/src/lib/libefi/common/rdwr_efi.c	Fri Oct 13 00:37:29 2006 -0700
@@ -372,10 +372,11 @@
 	if ((dk_ioc.dki_data = calloc(label_len, 1)) == NULL)
 		return (VT_ERROR);
 
-	dk_ioc.dki_length = label_len;
+	dk_ioc.dki_length = disk_info.dki_lbsize;
 	user_length = vtoc->efi_nparts;
 	efi = dk_ioc.dki_data;
 	if (md_flag) {
+		dk_ioc.dki_length = label_len;
 		if (efi_ioctl(fd, DKIOCGETEFI, &dk_ioc) == -1) {
 			switch (errno) {
 			case EIO:
@@ -433,6 +434,11 @@
 				rval = efi_ioctl(fd, DKIOCGETEFI, &dk_ioc);
 			}
 		}
+	} else {
+		dk_ioc.dki_lba = LE_64(efi->efi_gpt_PartitionEntryLBA);
+		dk_ioc.dki_data++;
+		dk_ioc.dki_length = label_len - disk_info.dki_lbsize;
+		rval = efi_ioctl(fd, DKIOCGETEFI, &dk_ioc);
 	}
 	if (rval < 0) {
 		free(efi);
@@ -440,8 +446,7 @@
 	}
 
 	/* LINTED -- always longlong aligned */
-	efi_parts = (efi_gpe_t *)(((char *)efi) +
-	    LE_64(efi->efi_gpt_PartitionEntryLBA) * disk_info.dki_lbsize);
+	efi_parts = (efi_gpe_t *)(((char *)efi) + disk_info.dki_lbsize);
 
 	/*
 	 * Assemble this into a "dk_gpt" struct for easier