Red Hat Bugzilla – Bug 1361490
system_reset should clear pending request for error (virtio-blk)
Last modified: 2017-03-21 05:40:15 EDT
+++ This bug was initially created as a clone of Bug #1361487 +++ Description of problem: The issue was reported on virtio-blk by Laszlo Ersek after him analyzing similar bugs on IDE: qemu-kvm-rhel6 BZ 1281713 qemu-kvm-rhel7 BZ 1299875 qemu-kvm-rhev7 BZ 1299876 The reproducer, as contributed by Laszlo, is: $ qemu-img create -f qcow2 test.qcow2 8G $ ulimit -f 256 $ qemu-system-x86_64 -enable-kvm -m 2048 -smp 2 \ \ -drive file=test.qcow2,werror=stop,rerror=stop,cache=writeback,id=hd0,if=none \ -device virtio-blk-pci,drive=hd0 \ \ -drive id=cd0,readonly,media=cdrom,cache=writeback,if=none,file=/mnt/data/isos/iso-fedora/Fedora-Workstation-Live-x86_64-24-1.2.iso \ -device ide-cd,drive=cd0 \ -monitor stdio - click Begin Installation in anaconda - when the guest is stopped, enter "system_reset", then "cont" at the monitor prompt Expected results: after system_reset, cont should reboot the guest. The pending I/O req should be dropped.
For reference, this is the cluster of BZ related to this issue: bug 1281713, bug 1299876, bug 1299875, bug 1361487, bug 1361490, bug 1361488, bug 1375520
Fix included in qemu-kvm-0.12.1.2-2.496.el6
Have verified, the problem still exist. Test Version: kernel version: 2.6.32-680.el6.x86_64 qemu-kvm-rhev version: qemu-kvm-rhev-0.12.1.2-2.499.el6.x86_64 Test Step: 1.Create 25G qcow2 image, install win2012r2 on it. 2.Full fill disk by copying the image, until prompt "No space left on device" appear. 3.Start guest by qemu cmd: MALLOC_PERTURB_=1 /usr/libexec/qemu-kvm \ -name 'avocado-vt-vm1' \ -machine rhel6.6.0 \ -nodefaults \ -vga std \ -chardev socket,id=qmp_id_qmpmonitor1,path=/var/tmp/monitor-qmpmonitor1-20161227-002429-zWDOQysC,server,nowait \ -mon chardev=qmp_id_qmpmonitor1,mode=control \ -chardev socket,id=qmp_id_catch_monitor,path=/var/tmp/monitor-catch_monitor-20161227-002429-zWDOQysC,server,nowait \ -mon chardev=qmp_id_catch_monitor,mode=control \ -device pvpanic,ioport=0x505,id=idBpoMGZ \ -chardev socket,id=serial_id_serial0,path=/var/tmp/serial-serial0-20161227-002429-zWDOQysC,server,nowait \ -device isa-serial,chardev=serial_id_serial0 \ -chardev socket,id=seabioslog_id_20161227-002429-zWDOQysC,path=/var/tmp/seabios-20161227-002429-zWDOQysC,server,nowait \ -device isa-debugcon,chardev=seabioslog_id_20161227-002429-zWDOQysC,iobase=0x402 \ -device ich9-usb-ehci1,id=usb1,addr=1d.7,multifunction=on,bus=pci.0 \ -device ich9-usb-uhci1,id=usb1.0,multifunction=on,masterbus=usb1.0,addr=1d.0,firstport=0,bus=pci.0 \ -device ich9-usb-uhci2,id=usb1.1,multifunction=on,masterbus=usb1.0,addr=1d.2,firstport=2,bus=pci.0 \ -device ich9-usb-uhci3,id=usb1.2,multifunction=on,masterbus=usb1.0,addr=1d.4,firstport=4,bus=pci.0 \ -drive id=drive_image1,if=none,snapshot=off,aio=native,cache=none,format=qcow2,file=/usr/share/avocado/data/avocado-vt/images/win2012-64r2-virtio.qcow2 \ -device virtio-blk-pci,id=image1,drive=drive_image1,bootindex=0,bus=pci.0 \ -device virtio-net-pci,mac=9a:b1:b2:b3:b4:b5,id=idFb0lIj,vectors=4,netdev=idNlTvHu,bus=pci.0,addr=04 \ -netdev tap,id=idNlTvHu,vhost=on \ -m 4096 \ -smp 2,maxcpus=2,cores=1,threads=1,sockets=2 \ -cpu 'SandyBridge' \ -drive id=drive_cd1,if=none,snapshot=off,aio=native,cache=none,media=cdrom,file=/usr/share/avocado/data/avocado-vt/isos/ISO/Win2012R2/en_windows_server_2012_r2_with_update_x64_dvd_6052708.iso \ -device ide-drive,id=cd1,drive=drive_cd1,bus=ide.0,unit=1 \ -device virtio-scsi-pci,id=virtio_scsi_pci0,bus=pci.0,addr=05 \ -drive id=drive_winutils,if=none,snapshot=off,aio=native,cache=none,media=cdrom,file=/usr/share/avocado/data/avocado-vt/isos/windows/winutils.iso \ -device scsi-cd,id=winutils,drive=drive_winutils \ -vnc :0 \ -rtc base=localtime,clock=host,driftfix=slew \ -boot order=cdn,menu=off,strict=off \ -enable-kvm \ -monitor stdio \ 4.Wait until error info "block I/O error in device 'drive_image1': No space left on device(28)"appear in hmp monitor, check vm status: (qemu)info status -----> VM status:paused(io-error) 5.Reset vm (qemu)system_reset -----> VM no response 6.Check vm status (qemu)info status -----> VM status:paused(io-error) From step4,5,6, we can see that the problem hasn't been resolved, so change the bug status to Assigned.
Aihua, you need to "cont" after "system_reset".
Retest it according to fam's suggestion, details as bellow: Test Version: kernel version: 2.6.32-681.el6.x86_64 qemu-kvm-rhev version: qemu-kvm-rhev-0.12.1.2-2.499.el6.x86_64 Test Step: 1.Create 25G qcow2 image, install win2012r2 on it. 2.Full fill disk by copying the image, until prompt "No space left on device" appear. 3.Start guest by qemu cmd: MALLOC_PERTURB_=1 /usr/libexec/qemu-kvm \ -name 'avocado-vt-vm1' \ -machine rhel6.6.0 \ -nodefaults \ -vga std \ -chardev socket,id=qmp_id_qmpmonitor1,path=/var/tmp/monitor-qmpmonitor1-20161227-002429-zWDOQysC,server,nowait \ -mon chardev=qmp_id_qmpmonitor1,mode=control \ -chardev socket,id=qmp_id_catch_monitor,path=/var/tmp/monitor-catch_monitor-20161227-002429-zWDOQysC,server,nowait \ -mon chardev=qmp_id_catch_monitor,mode=control \ -device pvpanic,ioport=0x505,id=idBpoMGZ \ -chardev socket,id=serial_id_serial0,path=/var/tmp/serial-serial0-20161227-002429-zWDOQysC,server,nowait \ -device isa-serial,chardev=serial_id_serial0 \ -chardev socket,id=seabioslog_id_20161227-002429-zWDOQysC,path=/var/tmp/seabios-20161227-002429-zWDOQysC,server,nowait \ -device isa-debugcon,chardev=seabioslog_id_20161227-002429-zWDOQysC,iobase=0x402 \ -device ich9-usb-ehci1,id=usb1,addr=1d.7,multifunction=on,bus=pci.0 \ -device ich9-usb-uhci1,id=usb1.0,multifunction=on,masterbus=usb1.0,addr=1d.0,firstport=0,bus=pci.0 \ -device ich9-usb-uhci2,id=usb1.1,multifunction=on,masterbus=usb1.0,addr=1d.2,firstport=2,bus=pci.0 \ -device ich9-usb-uhci3,id=usb1.2,multifunction=on,masterbus=usb1.0,addr=1d.4,firstport=4,bus=pci.0 \ -drive id=drive_image1,if=none,snapshot=off,aio=native,cache=none,format=qcow2,file=/usr/share/avocado/data/avocado-vt/images/win2012-64r2-virtio.qcow2 \ -device virtio-blk-pci,id=image1,drive=drive_image1,bootindex=0,bus=pci.0 \ -device virtio-net-pci,mac=9a:b1:b2:b3:b4:b5,id=idFb0lIj,vectors=4,netdev=idNlTvHu,bus=pci.0,addr=04 \ -netdev tap,id=idNlTvHu,vhost=on \ -m 4096 \ -smp 2,maxcpus=2,cores=1,threads=1,sockets=2 \ -cpu 'SandyBridge' \ -drive id=drive_cd1,if=none,snapshot=off,aio=native,cache=none,media=cdrom,file=/usr/share/avocado/data/avocado-vt/isos/ISO/Win2012R2/en_windows_server_2012_r2_with_update_x64_dvd_6052708.iso \ -device ide-drive,id=cd1,drive=drive_cd1,bus=ide.0,unit=1 \ -device virtio-scsi-pci,id=virtio_scsi_pci0,bus=pci.0,addr=05 \ -drive id=drive_winutils,if=none,snapshot=off,aio=native,cache=none,media=cdrom,file=/usr/share/avocado/data/avocado-vt/isos/windows/winutils.iso \ -device scsi-cd,id=winutils,drive=drive_winutils \ -vnc :0 \ -rtc base=localtime,clock=host,driftfix=slew \ -boot order=cdn,menu=off,strict=off \ -enable-kvm \ -monitor stdio \ 4.Wait until error info "block I/O error in device 'drive_image1': No space left on device(28)"appears in hmp monitor, check vm status: (qemu)info status -----> VM status:paused(io-error) 5.Reset vm (qemu)system_reset -----> VM seems no response 6.Cont vm (qemu)cont -----> VM restart and load win2012r2 then appear error msg "block I/O error in device 'drive_image1': No space left on device (28)" 7.Check vm status (qemu)info status -----> VM status:paused(io-error) 8.Release some disk space, repeat step5~6. Test Result: After step8, vm in "running" status. So, the problem has been resolved, change its status to "Verified".
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHSA-2017-0621.html