qemu/hw/scsi
Li Feng 6eaf0e612b vhost-user: fix lost reconnect again
When the vhost-user is reconnecting to the backend, and if the vhost-user fails
at the get_features in vhost_dev_init(), then the reconnect will fail
and it will not be retriggered forever.

The reason is:
When the vhost-user fail at get_features, the vhost_dev_cleanup will be called
immediately.

vhost_dev_cleanup calls 'memset(hdev, 0, sizeof(struct vhost_dev))'.

The reconnect path is:
vhost_user_blk_event
   vhost_user_async_close(.. vhost_user_blk_disconnect ..)
     qemu_chr_fe_set_handlers <----- clear the notifier callback
       schedule vhost_user_async_close_bh

The vhost->vdev is null, so the vhost_user_blk_disconnect will not be
called, then the event fd callback will not be reinstalled.

We need to ensure that even if vhost_dev_init initialization fails, the event
handler still needs to be reinstalled when s->connected is false.

All vhost-user devices have this issue, including vhost-user-blk/scsi.

Fixes: 71e076a07d ("hw/virtio: generalise CHR_EVENT_CLOSED handling")

Signed-off-by: Li Feng <fengli@smartx.com>
Message-Id: <20240516025753.130171-3-fengli@smartx.com>
Reviewed-by: Raphael Norwitz <raphael@enfabrica.net>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2024-07-01 17:16:04 -04:00
..
emulation.c scsi-generic: avoid invalid access to struct when emulating block limits 2018-11-06 21:35:06 +01:00
esp-pci.c hw/scsi/esp-pci: set DMA_STAT_BCMBLT when BLAST command issued 2024-01-19 12:28:59 +01:00
esp.c esp.c: remove explicit setting of DRQ within ESP state machine 2024-04-04 15:17:53 +01:00
Kconfig hw/scsi: Introduce VHOST_SCSI_COMMON symbol in Kconfig 2023-06-23 02:54:44 -04:00
lsi53c895a.c lsi53c895a: avoid out of bounds access to s->msg[] 2024-04-02 18:08:59 +02:00
megasas.c hw/scsi: Constify VMState 2023-12-30 07:38:06 +11:00
meson.build hw/virtio: Build various target-agnostic objects just once 2023-06-23 02:54:44 -04:00
mfi.h hw/other: spelling fixes 2023-09-21 11:31:16 +03:00
mpi.h
mptconfig.c nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
mptendian.c nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
mptsas.c hw/scsi: Constify VMState 2023-12-30 07:38:06 +11:00
mptsas.h include/hw/pci: Split pci_device.h off pci.h 2023-01-08 01:54:22 -05:00
scsi-bus.c scsi: Don't ignore most usb-storage properties 2024-02-07 15:25:13 +01:00
scsi-disk.c scsi-disk: Fix crash for VM configured with USB CDROM after live migration 2024-06-10 19:01:08 +02:00
scsi-generic.c hw/scsi/scsi-generic: Fix io_timeout property not applying 2024-03-26 14:24:06 +01:00
spapr_vscsi.c hw/scsi: Constify VMState 2023-12-30 07:38:06 +11:00
srp.h
trace-events hw/scsi/lsi53c895a: add timer to scripts processing 2024-03-08 15:51:21 +01:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
vhost-scsi-common.c vhost-user-scsi: support reconnect to backend 2023-10-22 05:18:17 -04:00
vhost-scsi.c vhost/vhost-user: Add VIRTIO_F_NOTIFICATION_DATA to vhost feature bits 2024-07-01 14:56:23 -04:00
vhost-user-scsi.c vhost-user: fix lost reconnect again 2024-07-01 17:16:04 -04:00
viosrp.h Updated the FSF address to <https://www.gnu.org/licenses/> 2023-02-27 09:15:39 +01:00
virtio-scsi-dataplane.c Rename "QEMU global mutex" to "BQL" in comments and docs 2024-01-08 10:45:43 -05:00
virtio-scsi.c virtio-scsi: Attach event vq notifier with no_poll 2024-02-07 21:50:32 +01:00
vmw_pvscsi.c hw/scsi: Constify VMState 2023-12-30 07:38:06 +11:00
vmw_pvscsi.h