Hi,
IMHO this must be fixed in vhost-user-scsi no matter what. Host processes crashing in case the guest doesn't behave as expected is a security problem.
Yes, the backend should be fixed. However, we may as well initialize these two vqs, because other virtio frontend drivers have implemented these as I know. It's good for compatibility.
Is this required by the virtio spec? I don't think so.
This crash is that some vring(controlq, eventq) aren't initialized done from vhost-user aspect. And spdk/dpdk handles incoming events from theses queues, but the vhost-user device isn't RUNNING status, becase some vqs are not ready, so the destruction is bad.
The device should look at the status bits.
https://docs.oasis-open.org/virtio/virtio/v1.1/csprd01/virtio-v1.1-csprd01.h...
When the driver sets DRIVER_OK it is done setting up virtqueues. When some of them are not ready the driver apparently doesn't want use them.
BTW, do you accept a future patch that implements the virtio SCSI hotplug?
Well, the problem with hotplug is that the BIOS interfaces have been created in the 1980-ies and are not designed with hotplug in mind. So retrofitting hotplug support into that is a rather hard problem and the benefits are questionable given that the BIOS typically runs only for a very short time, before the real operating system takes over control.
take care, Gerd