From 31358b0d3ea5b07f4167f88ac393a5eb2a2249d6 Mon Sep 17 00:00:00 2001 From: Youzhong Yang Date: Thu, 23 Mar 2017 18:15:04 +0000 Subject: 7999 'format' command says "Failed to initialise libfdisk" Reviewed by: Robert Mustacchi Reviewed by: Toomas Soome Reviewed by: Gary Mills Reviewed by: Garrett D'Amore Approved by: Dan McDonald --- usr/src/lib/libfdisk/common/libfdisk.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'usr/src/lib/libfdisk/common/libfdisk.c') diff --git a/usr/src/lib/libfdisk/common/libfdisk.c b/usr/src/lib/libfdisk/common/libfdisk.c index 028b501684..f34bff0b55 100644 --- a/usr/src/lib/libfdisk/common/libfdisk.c +++ b/usr/src/lib/libfdisk/common/libfdisk.c @@ -770,6 +770,7 @@ static int fdisk_read_master_part_table(ext_part_t *epp) { struct dk_minfo_ext dkmp_ext; + struct dk_minfo dkmp; uchar_t *buf; int sectsize; int size = sizeof (struct ipart); @@ -779,12 +780,16 @@ fdisk_read_master_part_table(ext_part_t *epp) return (EIO); } if (ioctl(epp->dev_fd, DKIOCGMEDIAINFOEXT, &dkmp_ext) < 0) { - return (EIO); + if (ioctl(epp->dev_fd, DKIOCGMEDIAINFO, &dkmp) < 0) { + return (EIO); + } + sectsize = dkmp.dki_lbsize; + } else { + sectsize = dkmp_ext.dki_lbsize; } - if (dkmp_ext.dki_lbsize < 512) { + if (sectsize < 512) { return (EIO); } - sectsize = dkmp_ext.dki_lbsize; buf = calloc(sectsize, sizeof (uchar_t)); if (buf == NULL) { return (ENOMEM); -- cgit v1.2.3