qemu-e2k/hw/scsi
Stefan Hajnoczi 184b962346 virtio-scsi: fix race between .ioeventfd_stop() and vq handler
If the main loop thread invokes .ioeventfd_stop() just as the vq handler
function begins in the IOThread then the handler may lose the race for
the AioContext lock.  By the time the vq handler is able to acquire the
AioContext lock the ioeventfd has already been removed and the handler
isn't supposed to run anymore!

Use the new aio_wait_bh_oneshot() function to perform ioeventfd removal
from within the IOThread.  This way no races with the vq handler are
possible.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Message-id: 20180307144205.20619-4-stefanha@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2018-03-08 17:38:51 +00:00
..
esp-pci.c pci: Add INTERFACE_CONVENTIONAL_PCI_DEVICE to Conventional PCI devices 2017-10-15 05:54:43 +03:00
esp.c Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
lsi53c895a.c scsi: Remove automatic creation of SCSI controllers with -drive if=scsi 2018-03-06 14:00:59 +01:00
Makefile.objs
megasas.c pci: removed the is_express field since a uniform interface was inserted 2018-02-08 21:06:41 +02:00
mfi.h
mpi.h
mptconfig.c
mptendian.c scsi: move block/scsi.h to include/scsi/constants.h 2017-09-19 14:09:31 +02:00
mptsas.c pci: Add pci_dev_bus_num() helper 2017-12-05 19:13:45 +02:00
mptsas.h
scsi-bus.c scsi: Remove automatic creation of SCSI controllers with -drive if=scsi 2018-03-06 14:00:59 +01:00
scsi-disk.c scsi-disk: release AioContext in unaligned WRITE SAME case 2018-01-16 14:54:50 +01:00
scsi-generic.c scsi-generic: Simplify error handling code 2018-02-05 13:54:39 +01:00
spapr_vscsi.c scsi: Remove automatic creation of SCSI controllers with -drive if=scsi 2018-03-06 14:00:59 +01:00
srp.h
trace-events trace-events: fix code style: print 0x before hex numbers 2017-08-01 12:13:07 +01:00
vhost-scsi-common.c Include qapi/error.h exactly where needed 2018-02-09 13:50:17 +01:00
vhost-scsi.c vhost-scsi: add missing virtqueue_size parameter 2017-12-05 12:38:31 +00:00
vhost-user-scsi.c misc: remove headers implicitly included 2017-12-18 17:07:02 +03:00
viosrp.h
virtio-scsi-dataplane.c virtio-scsi: fix race between .ioeventfd_stop() and vq handler 2018-03-08 17:38:51 +00:00
virtio-scsi.c scsi: move block/scsi.h to include/scsi/constants.h 2017-09-19 14:09:31 +02:00
vmw_pvscsi.c qdev: use device_class_set_parent_realize/unrealize/reset() 2018-02-05 13:54:38 +01:00
vmw_pvscsi.h