Bug 849003 - unplug the using disk cause fail to remove other pci device(Call Trace)
Summary: unplug the using disk cause fail to remove other pci device(Call Trace)
Keywords:
Status: CLOSED WONTFIX
Alias: None
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: kvm
Version: 5.9
Hardware: x86_64
OS: Linux
unspecified
unspecified
Target Milestone: rc
: ---
Assignee: Asias He
QA Contact: Virtualization Bugs
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2012-08-17 03:35 UTC by Sibiao Luo
Modified: 2013-11-01 00:04 UTC (History)
9 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2013-04-17 15:36:23 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Sibiao Luo 2012-08-17 03:35:09 UTC
Description of problem:
boot a guest and attach a virtio disk, use dd command to write date to the disk and unplug this disk in monitor, and then unplug other pci device(e.g. virtio NIC) will fail, call trance will occor. 

Version-Release number of selected component (if applicable):
host info:
# uname -r && rpm -q kvm
2.6.18-336.el5
kvm-83-259.el5
guest info:
RHEL-Server-5.9-64bit
# uname -r
2.6.18-336.el5

How reproducible:
always

Steps to Reproduce:
1.boot a guest with a virtio data disk attached.
eg. # /usr/libexec/qemu-kvm -m 2G -smp 2,cores=2,threads=1,sockets=1 -M rhel5.6.0 -cpu qemu64,+sse2 -name stress_test -drive file=/home/RHEL-Server-5.9-64-virtio.qcow2,format=qcow2,media=disk,if=virtio,cache=none,werror=stop,boot=on -uuid `uuidgen` -balloon virtio -serial unix:/tmp/ttyS0,server,nowait -usbdevice tablet -soundhw ac97 -no-hpet -rtc-td-hack -no-kvm-pit-reinjection -balloon virtio -net nic,vlan=0,model=virtio,macaddr=08:2E:5F:0A:0D:9A -net tap,sndbuf=0,vlan=0,script=/etc/qemu-ifup,downscript=no -boot c -vnc :1 -monitor stdio -drive file=/home/my-data-disk.qcow2,format=qcow2,media=disk,if=virtio,cache=none,werror=stop
2.use dd command to write date to disk.
dd if=/dev/urandom of=/dev/vdb bs=1M count=2048
3.hot-unplug the using data disk.
4.hot-remove other pci device(e.g. virtio NIC).

Actual results:
after the step 3, fail to remove the using data disk and dd would not fail.
after the step 4, fail to remove the virtio NIC device and call trance will occor after a while.
# nc -U /tmp/ttyS0
INFO: task kacpid:34 blocked for more than 120 seconds.
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
kacpid        D ffff810002536420     0    34     27           106    33 (L-TLB)
 ffff81007fcab750 0000000000000046 0000000000000001 0000000000000246
 ffff81007a0cb2a8 0000000000000009 ffff810037f657e0 ffffffff80319b60
 0000002fd9c72e58 0000000000630741 ffff810037f659c8 000000008006e665
Call Trace:
 [<ffffffff8006ecd9>] do_gettimeofday+0x40/0x90
 [<ffffffff800637de>] io_schedule+0x3f/0x67
 [<ffffffff80028da1>] get_request_wait+0xe7/0x130
 [<ffffffff800a3444>] autoremove_wake_function+0x0/0x2e
 [<ffffffff8002dd67>] blk_recount_segments+0x17/0x28
 [<ffffffff8000c190>] __make_request+0x40a/0x4ce
 [<ffffffff8001c344>] generic_make_request+0x211/0x228
 [<ffffffff80023340>] mempool_alloc+0x31/0xe7
 [<ffffffff8008d297>] __wake_up_common+0x3e/0x68
 [<ffffffff800330e1>] submit_bio+0xe6/0xed
 [<ffffffff8001ab0b>] submit_bh+0xf4/0x114
 [<ffffffff8001c54b>] __block_write_full_page+0x1f0/0x2fd
 [<ffffffff800e92a0>] blkdev_get_block+0x0/0x46
 [<ffffffff8001d0c3>] mpage_writepages+0x1bf/0x37d
 [<ffffffff800e849a>] blkdev_writepage+0x0/0xf
 [<ffffffff8005a86f>] do_writepages+0x20/0x2f
 [<ffffffff8004f75f>] __filemap_fdatawrite_range+0x50/0x5b
 [<ffffffff800c9880>] filemap_write_and_wait+0x17/0x31
 [<ffffffff8014d154>] invalidate_partition+0x28/0x40
 [<ffffffff8010f6db>] del_gendisk+0x30/0x131
 [<ffffffff88097049>] :virtio_blk:virtblk_remove+0x39/0x70
 [<ffffffff88075153>] :virtio:virtio_dev_remove+0x15/0x43
 [<ffffffff801ce720>] __device_release_driver+0x9f/0xe9
 [<ffffffff801cea29>] device_release_driver+0x2c/0x4e
 [<ffffffff801cdee5>] bus_remove_device+0xa4/0xb9
 [<ffffffff801ccbd3>] device_del+0x129/0x1a9
 [<ffffffff801ccc70>] device_unregister+0x9/0x12
 [<ffffffff8808b04a>] :virtio_pci:virtio_pci_remove+0x19/0x58
 [<ffffffff80164560>] pci_device_remove+0x24/0x3a
 [<ffffffff801ce720>] __device_release_driver+0x9f/0xe9
 [<ffffffff801cea29>] device_release_driver+0x2c/0x4e
 [<ffffffff801cdee5>] bus_remove_device+0xa4/0xb9
 [<ffffffff801ccbd3>] device_del+0x129/0x1a9
 [<ffffffff801ccc70>] device_unregister+0x9/0x12
 [<ffffffff80160884>] pci_stop_dev+0x25/0x57
 [<ffffffff888267ab>] :acpiphp:acpiphp_disable_slot+0x66/0x12a
 [<ffffffff8018403e>] acpi_os_execute_deferred+0x0/0x27
 [<ffffffff88826e5f>] :acpiphp:handle_hotplug_event_func+0x10c/0x13e
 [<ffffffff8019cfc7>] acpi_bus_get_device+0x1d/0x2e
 [<ffffffff80189ba9>] acpi_ev_notify_dispatch+0x57/0x60
 [<ffffffff8018405c>] acpi_os_execute_deferred+0x1e/0x27
 [<ffffffff8004d2e4>] run_workqueue+0x9e/0xfb
 [<ffffffff80049aed>] worker_thread+0x0/0x122
 [<ffffffff800a322c>] keventd_create_kthread+0x0/0xc4
 [<ffffffff80049bdd>] worker_thread+0xf0/0x122
 [<ffffffff8008ee72>] default_wake_function+0x0/0xe
 [<ffffffff800a322c>] keventd_create_kthread+0x0/0xc4
 [<ffffffff800a322c>] keventd_create_kthread+0x0/0xc4
 [<ffffffff80032679>] kthread+0xfe/0x132
 [<ffffffff8005dfb1>] child_rip+0xa/0x11
 [<ffffffff800a322c>] keventd_create_kthread+0x0/0xc4
 [<ffffffff8003257b>] kthread+0x0/0x132
 [<ffffffff8005dfa7>] child_rip+0x0/0x11 

Expected results:
1.remove the using data disk should success and 'dd' will fail with a prompt that I/O error.
2.remove other pci device (e.g. virtio NIC) should success and no call trance.

Additional info:
exsiting a similar bug in rhel6.3(bug 734051) has been fixed.
I tried the latest rhel6.4 guest (kernel-2.6.32-298.el6), it has no such issue, we can remove the using data disk successfully and 'dd' fail with a prompt: I/O error.

Comment 1 Ronen Hod 2012-08-19 14:16:42 UTC
Too late for RHEL5.9.
Will reconsider in 5.10.


Note You need to log in before you can comment on or make changes to this bug.