This series acquires the AioContext in the _realize() functions of several devices before making use of their block backends. This fixes at least a couple of crashes (in virtio-blk and scsi). The other devices don't currently support iothreads so there's no crashes.
Berto v2: - Patch 1: include a test case [Kevin] - Patch 2: include a test case and extend the locking to protect more function calls [Kevin] v1: https://lists.gnu.org/archive/html/qemu-block/2019-01/msg00259.html - Initial version Output of backport-diff against v1: Key: [----] : patches are identical [####] : number of functional differences between upstream/downstream patch [down] : patch is downstream-only The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively 001/6:[0095] [FC] 'block: Acquire the AioContext in virtio_blk_device_realize()' 002/6:[0094] [FC] 'block: Acquire the AioContext in scsi_*_realize()' 003/6:[----] [--] 'block: Acquire the AioContext in floppy_drive_realize()' 004/6:[----] [--] 'block: Acquire the AioContext in nvme_realize()' 005/6:[----] [--] 'block: Acquire the AioContext in ide_dev_initfn()' 006/6:[----] [--] 'block: Acquire the AioContext in usb_msd_storage_realize()' Alberto Garcia (6): block: Acquire the AioContext in virtio_blk_device_realize() block: Acquire the AioContext in scsi_*_realize() block: Acquire the AioContext in floppy_drive_realize() block: Acquire the AioContext in nvme_realize() block: Acquire the AioContext in ide_dev_initfn() block: Acquire the AioContext in usb_msd_storage_realize() hw/block/fdc.c | 15 ++++-- hw/block/nvme.c | 13 +++-- hw/block/virtio-blk.c | 22 ++++++--- hw/ide/qdev.c | 17 +++++-- hw/scsi/scsi-disk.c | 23 +++++++-- hw/usb/dev-storage.c | 5 ++ tests/qemu-iotests/236 | 121 +++++++++++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/236.out | 46 +++++++++++++++++ tests/qemu-iotests/group | 1 + 9 files changed, 241 insertions(+), 22 deletions(-) create mode 100755 tests/qemu-iotests/236 create mode 100644 tests/qemu-iotests/236.out -- 2.11.0