Re: [PATCH] virtio-scsi: hotplug suppot for virtio-scsi
From: Paolo Bonzini <pbonzini@redhat.com>
Date: 2012-07-02 08:12:19
Also in:
linux-scsi, lkml
Il 02/07/2012 09:20, mc@linux.vnet.ibm.com ha scritto:
quoted
quoted
+static void virtscsi_handle_event(struct work_struct *work) +{ + struct virtio_scsi_event_node *event_node = + container_of(work, struct virtio_scsi_event_node, work); + struct virtio_scsi *vscsi = event_node->vscsi; + struct virtio_scsi_event *event = &event_node->event; + + switch (event->event) { + case VIRTIO_SCSI_T_TRANSPORT_RESET: + virtscsi_handle_transport_reset(vscsi, event); + break;Please handle VIRTIO_SCSI_T_NO_EVENT too here, and mask out VIRTIO_SCSI_T_EVENTS_MISSED even if you do not handle it by triggering a full rescan.Paolo, what's the appropriate action to response VIRTIO_SCSI_T_NO_EVENT event? An error message?
No, just do nothing.
I also have some confusion on VIRTIO_SCSI_T_EVENTS_MISSED: Should VIRTIO_SCSI_T_EVENTS_MISSED always be used with other event flag?
Yes.
For instanse: (VIRTIO_SCSI_T_EVENTS_MISSED|VIRTIO_SCSI_T_TRANSPORT_RESET) is used to report hotplug event dropped when a buffer available.
The idea in the spec was that QEMU would report VIRTIO_SCSI_T_NO_EVENT | VIRTIO_SCSI_T_EVENTS_MISSED as soon as a buffer becomes available, but technically this is indeed possible. So you need to handle VIRTIO_SCSI_T_EVENTS_MISSED first, and the other bits separately. Paolo