Mercurial > illumos > illumos-gate
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