qemu/hw/scsi
Stefan Hajnoczi 766aa2de0f virtio-scsi: implement BlockDevOps->drained_begin()
The virtio-scsi Host Bus Adapter provides access to devices on a SCSI
bus. Those SCSI devices typically have a BlockBackend. When the
BlockBackend enters a drained section, the SCSI device must temporarily
stop submitting new I/O requests.

Implement this behavior by temporarily stopping virtio-scsi virtqueue
processing when one of the SCSI devices enters a drained section. The
new scsi_device_drained_begin() API allows scsi-disk to message the
virtio-scsi HBA.

scsi_device_drained_begin() uses a drain counter so that multiple SCSI
devices can have overlapping drained sections. The HBA only sees one
pair of .drained_begin/end() calls.

After this commit, virtio-scsi no longer depends on hw/virtio's
ioeventfd aio_set_event_notifier(is_external=true). This commit is a
step towards removing the aio_disable_external() API.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20230516190238.8401-19-stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
2023-05-30 17:32:02 +02:00
..
emulation.c
esp-pci.c
esp.c
Kconfig
lsi53c895a.c
megasas.c
meson.build
mfi.h
mpi.h
mptconfig.c
mptendian.c
mptsas.c
mptsas.h
scsi-bus.c virtio-scsi: implement BlockDevOps->drained_begin() 2023-05-30 17:32:02 +02:00
scsi-disk.c virtio-scsi: implement BlockDevOps->drained_begin() 2023-05-30 17:32:02 +02:00
scsi-generic.c
spapr_vscsi.c
srp.h
trace-events virtio-scsi: implement BlockDevOps->drained_begin() 2023-05-30 17:32:02 +02:00
trace.h
vhost-scsi-common.c
vhost-scsi.c
vhost-user-scsi.c
viosrp.h
virtio-scsi-dataplane.c virtio-scsi: implement BlockDevOps->drained_begin() 2023-05-30 17:32:02 +02:00
virtio-scsi.c virtio-scsi: implement BlockDevOps->drained_begin() 2023-05-30 17:32:02 +02:00
vmw_pvscsi.c
vmw_pvscsi.h