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
_______________________________________________
Virtualization mailing list
Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
[KVM Development]
[CentOS Virtualization]
[Netdev]
[Ethernet Bridging]
[Linux Wireless]
[Kernel Newbies]
[Security]
[Linux for Hams]
[Netfilter]
[Bugtraq]
[Photo]
[Yosemite]
[Yosemite Forum]
[MIPS Linux]
[ARM Linux]
[Linux RAID]
[Linux Admin]
[Samba]
[Find Someone Nice]
[Video 4 Linux]
[Linux Resources]