diff options
author | Youzhong Yang <yyang@mathworks.com> | 2017-03-23 18:15:04 +0000 |
---|---|---|
committer | Dan McDonald <danmcd@omniti.com> | 2017-04-06 14:53:59 -0400 |
commit | 31358b0d3ea5b07f4167f88ac393a5eb2a2249d6 (patch) | |
tree | 085cb7112bf8777b7334b94b60f443394097d4c7 /usr/src/lib/libfdisk/common/libfdisk.c | |
parent | 86cb0be22449bbfe13a5d6679a60201c4b258fdf (diff) | |
download | illumos-joyent-31358b0d3ea5b07f4167f88ac393a5eb2a2249d6.tar.gz |
7999 'format' command says "Failed to initialise libfdisk"
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Toomas Soome <tsoome@me.com>
Reviewed by: Gary Mills <gary_mills@fastmail.fm>
Reviewed by: Garrett D'Amore <garrett@damore.org>
Approved by: Dan McDonald <danmcd@omniti.com>
Diffstat (limited to 'usr/src/lib/libfdisk/common/libfdisk.c')
-rw-r--r-- | usr/src/lib/libfdisk/common/libfdisk.c | 11 |
1 files changed, 8 insertions, 3 deletions
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); |