qemu/hw
Max Reitz f6758f7d6b virtio-scsi: Allocate op blocker reason before blocking
s->blocker is really only used in hw/scsi/virtio-scsi.c; the only places
where it is used in hw/scsi/virtio-scsi-dataplane.c is when it is
allocated and when it is freed. That does not make a whole lot of sense
(and is actually wrong because this leads to s->blocker potentially
being NULL when blk_op_block_all() is called in virtio-scsi.c), so move
the allocation and destruction of s->blocker to the device realization
and unrealization in virtio-scsi.c, respectively.

Case in point:

$ echo -e 'eject drv\nquit' | \
    x86_64-softmmu/qemu-system-x86_64 \
        -monitor stdio -machine accel=qtest -display none \
        -object iothread,id=thr -device virtio-scsi-pci,iothread=thr \
        -drive if=none,file=test.qcow2,format=qcow2,id=drv \
        -device scsi-cd,drive=drv

Without this patch:

(qemu) eject drv
[1]    10102 done
       10103 segmentation fault (core dumped)

With this patch:

(qemu) eject drv
Device 'drv' is busy: block device is in use by data plane
(qemu) quit

Signed-off-by: Max Reitz <mreitz@redhat.com>
Message-Id: <1425057113-26940-1-git-send-email-mreitz@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2015-03-02 10:57:07 +01:00
..
9pfs rcu: introduce RCU-enabled QLIST 2015-02-16 17:30:19 +01:00
acpi pci, pc, virtio fixes and cleanups 2015-01-27 13:17:30 +00:00
alpha isa: add memory space parameter to isa_bus_new 2015-02-13 14:09:27 +00:00
arm error: Use error_report_err() where appropriate 2015-02-18 10:51:09 +01:00
audio sb16: fix interrupt acknowledgement 2015-01-22 11:04:18 +01:00
block Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
bt l2cap: fix access to freed memory 2014-08-15 19:12:48 +04:00
char error: Use error_report_err() where appropriate 2015-02-18 10:51:09 +01:00
core Create specific config option for "platform-bus" 2015-02-27 15:17:42 +01:00
cpu icc_bus: fix typo ICC_BRIGDE -> ICC_BRIDGE 2014-11-03 19:51:56 +03:00
cris hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
display isa: remove isa_mem_base variable 2015-02-13 14:09:28 +00:00
dma vmstate: accept QEMUTimer in VMSTATE_TIMER*, add VMSTATE_TIMER_PTR* 2015-01-26 12:22:44 +01:00
gpio PPC: Add MPC8XXX gpio controller 2014-11-04 23:26:12 +01:00
i2c Fix debug print warning 2014-09-02 22:38:16 +04:00
i386 Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
ide error: Use error_report_err() where appropriate 2015-02-18 10:51:09 +01:00
input Add trace to ps2.c. 2015-02-10 09:27:20 +03:00
intc hmp: Name HMP info handler functions hmp_info_SUBCOMMAND() 2015-02-18 11:58:50 +01:00
ipack memory: remove memory_region_destroy 2014-08-18 12:06:21 +02:00
isa isa: remove isa_mem_base variable 2015-02-13 14:09:28 +00:00
lm32 acpi-build: make ROMs RAM blocks resizeable 2015-01-08 13:17:55 +02:00
m68k hw/core/loader: implement address translation in uimage loader 2014-11-03 00:59:10 +03:00
mem pc-dimm: Add Error argument to pc_existing_dimms_capacity 2015-01-27 14:46:18 +02:00
microblaze hw/core/loader: implement address translation in uimage loader 2014-11-03 00:59:10 +03:00
mips gt64xxx: remove isa_mem_base usage 2015-02-13 14:09:27 +00:00
misc Give ivshmem its own config option 2015-02-27 15:17:46 +01:00
moxie memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
net rtl8139: g_malloc() can't fail, bury dead error handling 2015-02-10 09:27:20 +03:00
nvram fw_cfg: fix endianness in fw_cfg_data_mem_read() / _write() 2015-01-16 11:54:30 +00:00
openrisc hw/core/loader: implement address translation in uimage loader 2014-11-03 00:59:10 +03:00
pci Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
pci-bridge Add specific config options for PCI-E bridges 2015-02-27 15:17:35 +01:00
pci-host - vhost-scsi: add bootindex property 2015-02-24 13:58:18 +00:00
pcmcia hmp: Remove "info pcmcia" 2014-10-24 12:19:11 +01:00
ppc usb: error handling fixes from Markus, make sysbus ehci arm-only. 2015-02-25 11:54:15 +00:00
s390x s390x/pci: Rework memory access in zpci instruction 2015-02-18 09:37:15 +01:00
scsi virtio-scsi: Allocate op blocker reason before blocking 2015-03-02 10:57:07 +01:00
sd vmstate: accept QEMUTimer in VMSTATE_TIMER*, add VMSTATE_TIMER_PTR* 2015-01-26 12:22:44 +01:00
sh4 r2d: Don't use legacy -usbdevice support for setting up board 2015-02-18 10:53:10 +01:00
sparc hmp: Name HMP info handler functions hmp_info_SUBCOMMAND() 2015-02-18 11:58:50 +01:00
sparc64 isa: add memory space parameter to isa_bus_new 2015-02-13 14:09:27 +00:00
ssi ssi: xilinx_spi: Initialise CS GPIOs as NULL 2014-08-15 18:54:40 +04:00
timer fix mc146818rtc wrong subsection name to avoid vmstate_subsection_load() fail 2015-02-05 17:16:14 +01:00
tpm Drop superfluous conditionals around g_strdup() 2014-12-10 11:30:55 +03:00
tricore target-tricore: check return value before using it 2014-11-02 10:04:34 +03:00
unicore32 memory: add parameter errp to memory_region_init_ram 2014-09-09 13:41:43 +02:00
usb Clean up around error_get_pretty(), qerror_report_err() 2015-02-26 07:01:08 +00:00
vfio vfio: Fix debug message compile error 2015-02-10 10:25:44 -07:00
virtio - vhost-scsi: add bootindex property 2015-02-24 13:58:18 +00:00
watchdog vmstate: accept QEMUTimer in VMSTATE_TIMER*, add VMSTATE_TIMER_PTR* 2015-01-26 12:22:44 +01:00
xen xen-pt: Fix PCI devices re-attach failed 2015-01-13 11:49:46 +00:00
xenpv hw: Convert from BlockDriverState to BlockBackend, mostly 2014-10-20 14:02:25 +02:00
xtensa hw/xtensa/xtfpga: treat uImage load address as virtual 2014-11-03 01:00:37 +03:00
Makefile.objs vfio: move hw/misc/vfio.c to hw/vfio/pci.c Move vfio.h into include/hw/vfio 2014-12-19 15:24:06 -07:00