393296de19
For accessing single blocks during boot, it's the logical block size that matters. (Physical block sizes are rather interesting e.g. for creating file systems with the correct alignment for speed reasons etc.). So the s390-ccw bios has to use the logical block size for calculating sector numbers during the boot phase, the "physical_block_exp" shift value must not be taken into account. This change fixes the boot process when the guest hast been installed on a disk where the logical block size differs from the physical one, e.g. if the guest has been installed like this: qemu-system-s390x -nographic -accel kvm -m 2G \ -drive if=none,id=d1,file=fedora.iso,format=raw,media=cdrom \ -device virtio-scsi -device scsi-cd,drive=d1 \ -drive if=none,id=d2,file=test.qcow2,format=qcow2 -device virtio-blk,drive=d2,physical_block_size=4096,logical_block_size=512 Linux correctly uses the logical block size of 512 for the installation, but the s390-ccw bios tries to boot from a disk with 4096 block size so far, as long as this patch has not been applied yet (well, it used to work by accident in the past due to the virtio_assume_scsi() hack that used to enforce 512 byte sectors on all virtio-block disks, but that hack has been well removed in commit |
||
---|---|---|
.. | ||
bootmap.c | ||
bootmap.h | ||
bswap.h | ||
cio.c | ||
cio.h | ||
dasd-ipl.c | ||
dasd-ipl.h | ||
helper.h | ||
iplb.h | ||
jump2ipl.c | ||
libc.c | ||
libc.h | ||
main.c | ||
Makefile | ||
menu.c | ||
netboot.mak | ||
netmain.c | ||
s390-arch.h | ||
s390-ccw.h | ||
s390-time.h | ||
sclp.c | ||
sclp.h | ||
scsi.h | ||
start.S | ||
virtio-blkdev.c | ||
virtio-net.c | ||
virtio-scsi.c | ||
virtio-scsi.h | ||
virtio.c | ||
virtio.h |