diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2012-10-08 16:50:51 +0200 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2012-11-12 15:00:27 +0100 |
commit | cd41a671b370a3dd603963432d2b02f1e5990fb7 (patch) | |
tree | 794f4ab9970071ab02236d65fa2c8caa2cc75205 | |
parent | c8dcb531bcd37a4a81d2cc08a89fcd19c34348f9 (diff) | |
download | qemu-cd41a671b370a3dd603963432d2b02f1e5990fb7.zip qemu-cd41a671b370a3dd603963432d2b02f1e5990fb7.tar.gz qemu-cd41a671b370a3dd603963432d2b02f1e5990fb7.tar.bz2 |
virtio-scsi: factor checks for VIRTIO_SCSI_S_DRIVER_OK when reporting events
Suggested by Laszlo Ersek.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r-- | hw/virtio-scsi.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/hw/virtio-scsi.c b/hw/virtio-scsi.c index b54c789..30d3f8a 100644 --- a/hw/virtio-scsi.c +++ b/hw/virtio-scsi.c @@ -596,6 +596,10 @@ static void virtio_scsi_push_event(VirtIOSCSI *s, SCSIDevice *dev, VirtIOSCSIEvent *evt; int in_size; + if (!(s->vdev.status & VIRTIO_CONFIG_S_DRIVER_OK)) { + return; + } + if (!req) { s->events_dropped = true; return; @@ -648,7 +652,6 @@ static void virtio_scsi_change(SCSIBus *bus, SCSIDevice *dev, SCSISense sense) VirtIOSCSI *s = container_of(bus, VirtIOSCSI, bus); if (((s->vdev.guest_features >> VIRTIO_SCSI_F_CHANGE) & 1) && - (s->vdev.status & VIRTIO_CONFIG_S_DRIVER_OK) && dev->type != TYPE_ROM) { virtio_scsi_push_event(s, dev, VIRTIO_SCSI_T_PARAM_CHANGE, sense.asc | (sense.ascq << 8)); @@ -659,8 +662,7 @@ static void virtio_scsi_hotplug(SCSIBus *bus, SCSIDevice *dev) { VirtIOSCSI *s = container_of(bus, VirtIOSCSI, bus); - if (((s->vdev.guest_features >> VIRTIO_SCSI_F_HOTPLUG) & 1) && - (s->vdev.status & VIRTIO_CONFIG_S_DRIVER_OK)) { + if ((s->vdev.guest_features >> VIRTIO_SCSI_F_HOTPLUG) & 1) { virtio_scsi_push_event(s, dev, VIRTIO_SCSI_T_TRANSPORT_RESET, VIRTIO_SCSI_EVT_RESET_RESCAN); } |