qemu/hw/block
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
..
dataplane virtio-blk: move dataplane code into virtio-blk.c 2024-01-26 11:16:58 +01:00
block.c hw/block/block.c: improve confusing blk_check_size_and_read_all() error 2024-01-30 16:19:00 -05:00
cdrom.c
ecc.c hw/block: Constify VMState 2023-12-29 11:17:30 +11:00
fdc-internal.h hw/block/fdc-sysbus: Move iomem from FDCtrl to FDCtrlSysBus 2024-02-14 06:09:32 -05:00
fdc-isa.c hw/block/fdc-isa: Implement relocation and enabling/disabling for TYPE_ISA_FDC 2024-02-14 06:09:32 -05:00
fdc-sysbus.c hw/block/fdc-sysbus: Move iomem from FDCtrl to FDCtrlSysBus 2024-02-14 06:09:32 -05:00
fdc.c hw/block: Constify VMState 2023-12-29 11:17:30 +11:00
hd-geometry.c hw/other: spelling fixes 2023-09-21 11:31:16 +03:00
Kconfig
m25p80_sfdp.c block: m25p80: Add support of mt35xu02gbba 2024-02-27 13:01:41 +00:00
m25p80_sfdp.h block: m25p80: Add support of mt35xu02gbba 2024-02-27 13:01:41 +00:00
m25p80.c aspeed/smc: Only wire flash devices at reset 2024-03-19 11:58:15 +01:00
meson.build
nand.c hw/block/nand: Fix out-of-bound access in NAND block buffer 2024-04-10 09:09:34 +02:00
onenand.c hw/block: Constify VMState 2023-12-29 11:17:30 +11:00
pflash_cfi01.c hw/pflash: fix block write start 2024-05-17 16:49:04 +02:00
pflash_cfi02.c hw/block/block.c: improve confusing blk_check_size_and_read_all() error 2024-01-30 16:19:00 -05:00
swim.c hw/block: Constify VMState 2023-12-29 11:17:30 +11:00
tc58128.c hw/block/tc58128: Don't emit deprecation warning under qtest 2024-02-15 11:30:46 +00:00
trace-events hw/pflash: implement update buffer for block writes 2024-01-19 12:28:59 +01:00
trace.h
vhost-user-blk.c vhost-user: fix lost reconnect again 2024-07-01 17:16:04 -04:00
virtio-blk-common.c
virtio-blk.c virtio-blk: remove SCSI passthrough functionality 2024-06-05 11:01:05 +02:00
xen_blkif.h
xen-block.c hw/xen: clean up xen_block_find_free_vdev() to avoid Coverity false positive 2023-11-21 11:45:06 +00:00