Bug 808872

Summary: boot failover on usb-storage will not switch to other device
Product: Red Hat Enterprise Linux 6 Reporter: Chao Yang <chayang>
Component: seabiosAssignee: Paolo Bonzini <pbonzini>
Status: CLOSED NOTABUG QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 6.3CC: chayang, juzhang, michen, pbonzini, shuang, virt-maint
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2012-04-02 14:30:54 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Chao Yang 2012-04-01 11:51:25 UTC
Description of problem:
If boot from a usb-storage fails, i.e. usb-storage is not a bootable one. Seabios not trying to boot from other device but reports:
This is not a bootable disk.  Please insert a bootable floppy and
press any key to try again ...

Version-Release number of selected component (if applicable):
qemu-kvm-0.12.1.2-2.265.el6rhev.x86_64
seabios-0.6.1.2-16.el6.x86_64


How reproducible:


Steps to Reproduce:
1.
2.
3.
  
Actual results:


Expected results:


Additional info:
CLI:
/usr/libexec/qemu-kvm -M rhel6.3.0 -cpu Nehalem -enable-kvm -m 2048 -smp 2,sockets=1,cores=2,threads=1 -name seabios -uuid 0878530e-dc0a-4f8e-ac38-4ae2b1a44d92 -boot menu=on  -rtc base=localtime,clock=host,driftfix=slew -device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=pci.0 -device piix3-usb-uhci,id=usb,bus=pci.0 -drive file=/dev/chayang-ag/seabios,if=none,id=drive-virtio-disk0,format=raw,serial=69-a2ad-85f195fee049,cache=none,werror=stop,rerror=stop,aio=native -device virtio-blk-pci,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1,scsi=on \

-drive file=/home/en_windows_7_ultimate_with_sp1_x64_dvd_618240.iso,if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0,bootindex=3 \

-netdev tap,id=hostnet0,vhost=on -device virtio-net-pci,netdev=hostnet0,id=net0,mac=00:33:AE:27:54:AF,bus=pci.0,bootindex=4 \

-netdev tap,id=hostnet1,vhost=on -device e1000,netdev=hostnet1,id=net1,mac=00:33:AE:27:14:1F,bus=pci.0,bootindex=5 \

-netdev tap,id=hostnet2,vhost=on -device rtl8139,netdev=hostnet2,id=net2,mac=00:33:AE:27:24:2F,bus=pci.0,bootindex=6 \

-chardev socket,id=charchannel0,path=/opt/seabios.com.redhat.rhevm.vdsm,server,nowait -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.rhevm.vdsm -chardev spicevmc,id=charchannel1,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=2,chardev=charchannel1,id=channel1,name=com.redhat.spice.0 -spice port=9000,disable-ticketing -k en-us -vga qxl -global qxl-vga.vram_size=67108864 -device virtio-balloon-pci,id=balloon -device usb-ehci,id=ehci -drive file=/dev/chayang-ag/usb-storage,if=none,id=drive-virtio-disk1,format=raw,cache=none,werror=stop,rerror=stop,aio=native,serial=e4977805-a8f6-4854-98a0-edbd1ee9ed58 -device usb-storage,bus=ehci.0,port=1,drive=drive-virtio-disk1,id=virtio-disk1,port=1,removable=on,bootindex=0 \

-drive file=/opt/RHEL6.2.z-64.qcow2,if=none,id=drive-virtio-disk2,format=qcow2,cache=none,werror=stop,rerror=stop,aio=native,serial=4071bf55-4710-4652-9af5-206a9ece1644 -device usb-storage,drive=drive-virtio-disk2,id=virtio-disk2,bus=ehci.0,port=2,bootindex=8  \

-drive file=/home/test.vfd,if=none,id=drive-fdc0-0-0,readonly=on,format=raw -global isa-fdc.driveA=drive-fdc0-0-0 -global isa-fdc.bootindexA=7 -monitor stdio

Comment 2 Paolo Bonzini 2012-04-02 14:30:54 UTC
The error message comes from the boot record of your disk, not from SeaBIOS.

Comment 3 Chao Yang 2012-04-05 05:02:20 UTC
(In reply to comment #2)
> The error message comes from the boot record of your disk, not from SeaBIOS.

If booting from disk fails, shouldn't Seabios try to boot from other device, like NIC(depends on bootindex specified in cli)? QE was testing how Seabios behaves on boot failover. It is proved that Seabios could try to boot from NIC if fails to boot from virtio disk with bootindex specified in cli.

Comment 4 Paolo Bonzini 2012-04-05 16:06:20 UTC
It cannot, because the boot succeeded.  The boot code in the disk however does nothing but an infinite loop.  The "bug" is not in SeaBIOS, it is in the disk boot sector which you cannot control.

Similarly if boot from NIC did not failover you would open a bug on gpxe, not seabios.

Comment 5 Chao Yang 2012-04-06 02:39:19 UTC
(In reply to comment #4)
> It cannot, because the boot succeeded.  The boot code in the disk however does
> nothing but an infinite loop.  The "bug" is not in SeaBIOS, it is in the disk
> boot sector which you cannot control.
> 
> Similarly if boot from NIC did not failover you would open a bug on gpxe, not
> seabios.

Thanks for your clarification. I retried with a fresh disk---no partition/fs on it, and failover works well.