diff options
author | yl194034 <none@none> | 2006-10-13 00:37:29 -0700 |
---|---|---|
committer | yl194034 <none@none> | 2006-10-13 00:37:29 -0700 |
commit | c7e1889f78c3e1634600b0db1cab1cfa4ca01995 (patch) | |
tree | e095a812b6201fd3a57161fc30c743a8497457dc /usr/src/lib/libefi | |
parent | 18c2aff776a775d34a4c9893a4c72e0434d68e36 (diff) | |
download | illumos-joyent-c7e1889f78c3e1634600b0db1cab1cfa4ca01995.tar.gz |
6479646 inuse checking of zpool components by format is no longer working
Diffstat (limited to 'usr/src/lib/libefi')
-rw-r--r-- | usr/src/lib/libefi/common/rdwr_efi.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/usr/src/lib/libefi/common/rdwr_efi.c b/usr/src/lib/libefi/common/rdwr_efi.c index d366be1448..0c57001d87 100644 --- a/usr/src/lib/libefi/common/rdwr_efi.c +++ b/usr/src/lib/libefi/common/rdwr_efi.c @@ -372,10 +372,11 @@ efi_read(int fd, struct dk_gpt *vtoc) 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 @@ efi_read(int fd, struct dk_gpt *vtoc) 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 @@ efi_read(int fd, struct dk_gpt *vtoc) } /* 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 |