9840 loader: do not repeat int13 calls when we have no media 9841 loader: issue edd probe before legacy ah=08

Review Request #551 - Created June 2, 2017 and updated

Information
Toomas Soome
illumos-gate
9840, 9841
09597fe...
Reviewers
general

This is in progress development patch to address some problems seen about disk device probing. There are few reports about BTX panic at disk probe phase, and the current hypothesis is about reliability of disk info calls (int13 ah=08 and ax=4100h), and the system responses for missing media. Note this current version is built against current gate, the final version will get rebased on 4kn patch.

loader: do not repeat int13 calls with error 0x20, 0x31, 0x80

the 0x20 (controller error) is reported on missing media by qemu (+seabios), 0x31 is the error code for missing media, 0x80 (timeout) is reported in vmware fusion. As an response to such error, we flag this device with BD_NO_MEDIA and return EIO.

If the IO was successful and this device has BD_NO_MEDIA flag, we reset this flag. On open() we do check BD_NO_MEDIA flag, and will try to probe this device again.

loader: issue edd probe before legacy ah=08
While testing the floppy device behavior, I did notice the int13 ah=08 interface did return unexpected results sometimes, and so I did switch the proble order to use int13 ax=4100h (if available) and fall back to int13 ah=08. This seems to produce more stable disk info.

gptzfsboot: do not probe floppy devices for zfs
This is temporary workaround for BIOS systems, till the disk backend will get floppy devices split from fixed disks. The minimum device size in zfs is 64MB and there is little sense to probe floppies.

My own testing is done on vmware fusion and floppy device (connect/disconnect floppy to simulate the media removal).

Issues

  • 0
  • 2
  • 0
  • 2
Description From Last Updated
Yuri Pankov
Yuri Pankov
Toomas Soome
Toomas Soome
Toomas Soome
Toomas Soome
Toomas Soome
Toomas Soome
Review request changed

Change Summary:

attach issue numbers

Summary:

-loader: do not repeat int13 calls with error 0x20 and 0x31
+9840 loader: do not repeat int13 calls when we have no media 9841 loader: issue edd probe before legacy ah=08

Bugs:

+9841, 9840
Yuri Pankov
Ship It!
Andy Fiddaman
Ship It!
Loading...