Bug 984825

Summary: [vioscsi]Segmentation fault when do s3 after block_resize a hotplug disk on win7 guest.
Product: Red Hat Enterprise Linux 7 Reporter: Min Deng <mdeng>
Component: virtio-winAssignee: Vadim Rozenfeld <vrozenfe>
Status: CLOSED CURRENTRELEASE QA Contact: Virtualization Bugs <virt-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.0CC: acathrow, bcao, bsarathy, juzhang, mdeng, michen, rhod, virt-bugs, virt-maint, vrozenfe
Target Milestone: rc   
Target Release: 7.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: build74 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-06-13 11:39:43 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 923626    

Description Min Deng 2013-07-16 06:51:13 UTC
Description of problem:
Sleep failed while block_resize a hotplug disk on win7 guest with vioscsi installed.

Version-Release number of selected component (if applicable):
qemu-kvm-1.5.1-2.el7.x86_64
build 65

How reproducible:
1 times

Steps to Reproduce:
1.boot up guest with the CLI
  /usr/libexec/qemu-kvm -m 6G -smp 4 -cpu Opteron_G3,family=0xf -usb -device usb-tablet -netdev tap,sndbuf=0,id=hostnet0,script=/etc/qemu-ifup,downscript=no -device e1000,netdev=hostnet0,mac=00:1c:3f:21:46:31 -uuid cccc6a20-2351-4762-a654-b7990c16d720 -vnc :1 -rtc base=localtime,clock=host,driftfix=slew -chardev socket,id=seabios_debug,path=/tmp/monitor-seabios,server,nowait -device isa-debugcon,iobase=0x402,chardev=seabios_debug -drive file=win7-32.qcow3,if=none,media=disk,format=raw,rerror=stop,werror=stop,cache=none,id=scsi-disk0,format=qcow2 -drive file=disk1.qcow3,if=none,media=disk,format=qcow2,rerror=stop,werror=stop,cache=none,aio=native,id=scsi-disk1 -drive file=disk2.qcow3,if=none,media=disk,format=qcow2,rerror=stop,werror=stop,cache=none,aio=native,id=scsi-disk2 -drive file=disk3.qcow3,if=none,media=disk,format=qcow2,rerror=stop,werror=stop,cache=none,aio=native,id=scsi-disk3 -drive file=disk4.qcow3,if=none,media=disk,format=qcow2,rerror=stop,werror=stop,cache=none,aio=native,id=scsi-disk4,readonly=on -device virtio-scsi-pci,id=bus1 -device scsi-hd,bus=bus1.0,drive=scsi-disk0,id=disk,serial=test,bootindex=1 -device scsi-hd,bus=bus1.0,drive=scsi-disk1,id=disk1,serial=test1 -device scsi-hd,bus=bus1.0,drive=scsi-disk2,id=disk2,serial=test2 -device scsi-hd,bus=bus1.0,drive=scsi-disk3,id=disk3,serial=test3 -device scsi-hd,bus=bus1.0,drive=scsi-disk4,id=disk4,serial=test4 -global PIIX4_PM.disable_s3=0 -global PIIX4_PM.disable_s4=0 -monitor stdio -qmp tcp:0:1111,server,nowait -device virtio-scsi-pci,id=bus2 -device scsi-hd,bus=bus2.0,drive=scsi-disk5,id=disk5,serial=test5 -drive file=disk5.qcow3,if=none,media=disk,format=qcow2,rerror=stop,werror=stop,cache=none,aio=native,id=scsi-disk5 -spice disable-ticketing,port=5931 -vga qxl
2.in monitor
  1.device_add virtio-scsi-pci,id=scsi-hotadddrive-data-disk1
  2.drive_add pci_addr=auto file=/mnt/test30.qcow2,if=none,id=drive-   data-disk1,format=qcow2,cache=none,aio=native,werror=stop,rerror=stop
  3.device_add scsi-hd,drive=drive-data-disk1,id=hotadd,bus=scsi-hotadd.0
3.Go to guest and rescan disks from device manager and then go back to monitor
 and 
  block_resize drive-data-disk1 50G 
4.Copy files to the disk after format it 
5.Do Sleep 

Actual results:
The sleep can finish

Expected results:
Sleep failed 

Additional info:

Comment 1 Min Deng 2013-07-16 06:51:33 UTC
Error info from gdb
--------------------------------------------------------------------
(qemu) block_resize drive-data-disk1 50G
(qemu) 
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffea207700 (LWP 31542)]
bdrv_getlength (bs=0x0) at block.c:2709
2709	    BlockDriver *drv = bs->drv;
(gdb) bt
#0  bdrv_getlength (bs=0x0) at block.c:2709
#1  0x00005555555d736d in bdrv_get_geometry (bs=<optimized out>, 
    nb_sectors_ptr=nb_sectors_ptr@entry=0x7fffea206990) at block.c:2725
#2  0x00005555556880b6 in scsi_disk_reset (dev=0x555556e0e710) at hw/scsi/scsi-disk.c:1982
#3  0x00005555556395f9 in qdev_reset_one (dev=dev@entry=0x555556e0e710, opaque=opaque@entry=0x0)
    at hw/core/qdev.c:227
#4  0x0000555555638cf0 in qdev_walk_children (dev=0x555556e0e710, 
    devfn=devfn@entry=0x5555556395e0 <qdev_reset_one>, 
    busfn=busfn@entry=0x5555556375e0 <qbus_reset_one>, opaque=opaque@entry=0x0)
    at hw/core/qdev.c:376
#5  0x0000555555638dfa in qbus_walk_children (bus=bus@entry=0x5555570a6910, 
    devfn=devfn@entry=0x5555556395e0 <qdev_reset_one>, 
    busfn=busfn@entry=0x5555556375e0 <qbus_reset_one>, opaque=opaque@entry=0x0)
    at hw/core/qdev.c:360
#6  0x0000555555638e6d in qbus_reset_all (bus=bus@entry=0x5555570a6910) at hw/core/qdev.c:248
#7  0x0000555555777a53 in virtio_scsi_reset (vdev=<optimized out>)
    at /usr/src/debug/qemu-1.5.1/hw/scsi/virtio-scsi.c:451
#8  0x000055555577f62e in virtio_reset (opaque=0x5555570a67f8)
    at /usr/src/debug/qemu-1.5.1/hw/virtio/virtio.c:543
#9  0x00005555556b7a80 in virtio_ioport_write (val=0, addr=<optimized out>, opaque=0x5555570a6000)
    at hw/virtio/virtio-pci.c:307
#10 virtio_pci_config_write (opaque=0x5555570a6000, addr=<optimized out>, val=0, 
    size=<optimized out>) at hw/virtio/virtio-pci.c:422
#11 0x0000555555785c62 in access_with_adjusted_size (addr=addr@entry=18, 
    value=value@entry=0x7fffea206b58, size=1, access_size_min=<optimized out>, 
    access_size_max=<optimized out>, 
    access=access@entry=0x555555786220 <memory_region_write_accessor>, 
    opaque=opaque@entry=0x5555570a66b0) at /usr/src/debug/qemu-1.5.1/memory.c:364
#12 0x0000555555787137 in memory_region_iorange_write (iorange=<optimized out>, offset=18, 
    width=1, data=0) at /usr/src/debug/qemu-1.5.1/memory.c:439
#13 0x00005555557847d2 in kvm_handle_io (count=1, size=1, direction=1, data=<optimized out>, 
---Type <return> to continue, or q <return> to quit---
    port=65490) at /usr/src/debug/qemu-1.5.1/kvm-all.c:1482
#14 kvm_cpu_exec (env=env@entry=0x555556d8ec80) at /usr/src/debug/qemu-1.5.1/kvm-all.c:1634
#15 0x000055555572fdd5 in qemu_kvm_cpu_thread_fn (arg=0x555556d8ec80)
    at /usr/src/debug/qemu-1.5.1/cpus.c:759
#16 0x00007ffff6263c53 in start_thread () from /lib64/libpthread.so.0
#17 0x00007ffff39f00dd in clone () from /lib64/libc.so.6

Comment 4 Ronen Hod 2014-01-02 10:12:56 UTC
QE,
Please rescan the disk in step 3 also after the resize. It will help us understand the problem.
Thanks.

Comment 5 juzhang 2014-01-02 10:14:44 UTC
Hi Min,

Could you have a try and update the result in the bz?

Best Regards,
Junyi

Comment 6 Min Deng 2014-01-06 07:36:22 UTC
(In reply to juzhang from comment #5)
> Hi Min,
> 
> Could you have a try and update the result in the bz?
> 
> Best Regards,
> Junyi

Re-test the bug with build
qemu-kvm-1.5.3-30.el7.x86_64
build74
After step3,rescan the disk,it changed to new size accordingly.
Beside,after step5,I could not reproduce the issue any more via above build.

Comment 7 Mike Cao 2014-02-24 06:30:42 UTC
Move to verified based on comment #6

Comment 8 Ludek Smid 2014-06-13 11:39:43 UTC
This request was resolved in Red Hat Enterprise Linux 7.0.

Contact your manager or support representative in case you have further questions about the request.