summaryrefslogtreecommitdiff
path: root/usr/src/lib/libfdisk/common/libfdisk.c
diff options
context:
space:
mode:
authorYouzhong Yang <yyang@mathworks.com>2017-03-23 18:15:04 +0000
committerDan McDonald <danmcd@omniti.com>2017-04-06 14:53:59 -0400
commit31358b0d3ea5b07f4167f88ac393a5eb2a2249d6 (patch)
tree085cb7112bf8777b7334b94b60f443394097d4c7 /usr/src/lib/libfdisk/common/libfdisk.c
parent86cb0be22449bbfe13a5d6679a60201c4b258fdf (diff)
downloadillumos-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.c11
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);