]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
MFC r339658, r339959, r340047, r340049, r340215
authorkevans <kevans@FreeBSD.org>
Sun, 21 Apr 2019 03:30:47 +0000 (03:30 +0000)
committerkevans <kevans@FreeBSD.org>
Sun, 21 Apr 2019 03:30:47 +0000 (03:30 +0000)
commit11f50d1c94013b6c423b8d0c3b7b6d00706e8a26
tree6fe3d625508a87c16d1c32f34a39fd3df1987e00
parent20d9ca015cbdc12c95e1742a762815931dd1167e
MFC r339658, r339959, r340047, r340049, r340215

r339658:
loader: biosdisk interface should be able to cope with 4k sectors

The 4kn support in current bios specific biosdisk.c is broken, as the code
is only implementing the support for the 512B sector size.

This work is building the support for custom size sectors, we still do assume
the requested data to be multiple of 512B blocks and we only do address the
biosdisk.c interface here.

For reference, see also:
https://www.illumos.org/issues/8303
https://www.illumos.org/rb/r/547

As the GELI is moved above biosdisk "layer", the GELI should just work

r339959:
loader: issue edd probe before legacy ah=08 and detect no media

while probing for drives, use int13 extended info before standard one and
provide workaround for case we are not getting needed information in case
of floppy drive.

In case of INT13 errors, there are (at least) 3 error codes appearing in case
of missin media - 20h, 31h and 80h. Flag the no media and do not print an
error.

r340047:
loader: do not probe floppy devices for zfs

The subject is telling it all.

r340049:
loader: biosdisk should check if the media is present

The bd_print/bd_open/bd_strategy need to make sure the device does have
media, before getting into performing IO operations. Some systems can
hung if the device without a media is accessed.

r340215:
loader: always set media size from partition.

The disk access is validated by using partition table definitions, therefore
we have no need for if statements, just set the disk size.

Of course the partition table itself may be incorrect/inconsistent, but if
so, we are in trouble anyhow.
stand/common/disk.c
stand/common/part.c
stand/i386/libi386/biosdisk.c
stand/i386/loader/main.c