Print this page
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>

@@ -768,25 +768,30 @@
  */
 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);
         int cpcnt = FD_NUMPART * size;
 
         if (lseek(epp->dev_fd, 0, SEEK_SET) < 0) {
                 return (EIO);
         }
         if (ioctl(epp->dev_fd, DKIOCGMEDIAINFOEXT, &dkmp_ext) < 0) {
+                if (ioctl(epp->dev_fd, DKIOCGMEDIAINFO, &dkmp) < 0) {
                 return (EIO);
         }
-        if (dkmp_ext.dki_lbsize < 512) {
+                sectsize = dkmp.dki_lbsize;
+        } else {
+                sectsize = dkmp_ext.dki_lbsize;
+        }
+        if (sectsize < 512) {
                 return (EIO);
         }
-        sectsize = dkmp_ext.dki_lbsize;
         buf = calloc(sectsize, sizeof (uchar_t));
         if (buf == NULL) {
                 return (ENOMEM);
         }
         if (read(epp->dev_fd, buf, sectsize) < sectsize) {