Il 02/07/2012 09:20, mc@xxxxxxxxxxxxxxxxxx ha scritto: >>> +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 -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html