virtio-scsi.c (5452b6f61ae943aff5c13cdd65fb476efff636d3) | virtio-scsi.c (95129d6fc9ead97155627a4ca0cfd37282883658) |
---|---|
1/* 2 * Virtio SCSI HBA 3 * 4 * Copyright IBM, Corp. 2010 5 * Copyright Red Hat, Inc. 2011 6 * 7 * Authors: 8 * Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> --- 131 unchanged lines hidden (view full) --- 140 * request/response, making the payload start at the second element 141 * of the iovec. 142 * 143 * The actual length of the response header, stored in req->resp_size, 144 * does not change. 145 * 146 * TODO: always disable this workaround for virtio 1.0 devices. 147 */ | 1/* 2 * Virtio SCSI HBA 3 * 4 * Copyright IBM, Corp. 2010 5 * Copyright Red Hat, Inc. 2011 6 * 7 * Authors: 8 * Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> --- 131 unchanged lines hidden (view full) --- 140 * request/response, making the payload start at the second element 141 * of the iovec. 142 * 143 * The actual length of the response header, stored in req->resp_size, 144 * does not change. 145 * 146 * TODO: always disable this workaround for virtio 1.0 devices. 147 */ |
148 if (!virtio_has_feature(vdev, VIRTIO_F_ANY_LAYOUT)) { | 148 if (!virtio_vdev_has_feature(vdev, VIRTIO_F_ANY_LAYOUT)) { |
149 if (req->elem.out_num) { 150 req_size = req->elem.out_sg[0].iov_len; 151 } 152 if (req->elem.in_num) { 153 resp_size = req->elem.in_sg[0].iov_len; 154 } 155 } 156 --- 597 unchanged lines hidden (view full) --- 754 } 755} 756 757static void virtio_scsi_change(SCSIBus *bus, SCSIDevice *dev, SCSISense sense) 758{ 759 VirtIOSCSI *s = container_of(bus, VirtIOSCSI, bus); 760 VirtIODevice *vdev = VIRTIO_DEVICE(s); 761 | 149 if (req->elem.out_num) { 150 req_size = req->elem.out_sg[0].iov_len; 151 } 152 if (req->elem.in_num) { 153 resp_size = req->elem.in_sg[0].iov_len; 154 } 155 } 156 --- 597 unchanged lines hidden (view full) --- 754 } 755} 756 757static void virtio_scsi_change(SCSIBus *bus, SCSIDevice *dev, SCSISense sense) 758{ 759 VirtIOSCSI *s = container_of(bus, VirtIOSCSI, bus); 760 VirtIODevice *vdev = VIRTIO_DEVICE(s); 761 |
762 if (virtio_has_feature(vdev, VIRTIO_SCSI_F_CHANGE) && | 762 if (virtio_vdev_has_feature(vdev, VIRTIO_SCSI_F_CHANGE) && |
763 dev->type != TYPE_ROM) { 764 virtio_scsi_push_event(s, dev, VIRTIO_SCSI_T_PARAM_CHANGE, 765 sense.asc | (sense.ascq << 8)); 766 } 767} 768 769static void virtio_scsi_hotplug(HotplugHandler *hotplug_dev, DeviceState *dev, 770 Error **errp) --- 7 unchanged lines hidden (view full) --- 778 return; 779 } 780 blk_op_block_all(sd->conf.blk, s->blocker); 781 aio_context_acquire(s->ctx); 782 blk_set_aio_context(sd->conf.blk, s->ctx); 783 aio_context_release(s->ctx); 784 } 785 | 763 dev->type != TYPE_ROM) { 764 virtio_scsi_push_event(s, dev, VIRTIO_SCSI_T_PARAM_CHANGE, 765 sense.asc | (sense.ascq << 8)); 766 } 767} 768 769static void virtio_scsi_hotplug(HotplugHandler *hotplug_dev, DeviceState *dev, 770 Error **errp) --- 7 unchanged lines hidden (view full) --- 778 return; 779 } 780 blk_op_block_all(sd->conf.blk, s->blocker); 781 aio_context_acquire(s->ctx); 782 blk_set_aio_context(sd->conf.blk, s->ctx); 783 aio_context_release(s->ctx); 784 } 785 |
786 if (virtio_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG)) { | 786 if (virtio_vdev_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG)) { |
787 virtio_scsi_push_event(s, sd, 788 VIRTIO_SCSI_T_TRANSPORT_RESET, 789 VIRTIO_SCSI_EVT_RESET_RESCAN); 790 } 791} 792 793static void virtio_scsi_hotunplug(HotplugHandler *hotplug_dev, DeviceState *dev, 794 Error **errp) 795{ 796 VirtIODevice *vdev = VIRTIO_DEVICE(hotplug_dev); 797 VirtIOSCSI *s = VIRTIO_SCSI(vdev); 798 SCSIDevice *sd = SCSI_DEVICE(dev); 799 | 787 virtio_scsi_push_event(s, sd, 788 VIRTIO_SCSI_T_TRANSPORT_RESET, 789 VIRTIO_SCSI_EVT_RESET_RESCAN); 790 } 791} 792 793static void virtio_scsi_hotunplug(HotplugHandler *hotplug_dev, DeviceState *dev, 794 Error **errp) 795{ 796 VirtIODevice *vdev = VIRTIO_DEVICE(hotplug_dev); 797 VirtIOSCSI *s = VIRTIO_SCSI(vdev); 798 SCSIDevice *sd = SCSI_DEVICE(dev); 799 |
800 if (virtio_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG)) { | 800 if (virtio_vdev_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG)) { |
801 virtio_scsi_push_event(s, sd, 802 VIRTIO_SCSI_T_TRANSPORT_RESET, 803 VIRTIO_SCSI_EVT_RESET_REMOVED); 804 } 805 806 if (s->ctx) { 807 blk_op_unblock_all(sd->conf.blk, s->blocker); 808 } --- 213 unchanged lines hidden --- | 801 virtio_scsi_push_event(s, sd, 802 VIRTIO_SCSI_T_TRANSPORT_RESET, 803 VIRTIO_SCSI_EVT_RESET_REMOVED); 804 } 805 806 if (s->ctx) { 807 blk_op_unblock_all(sd->conf.blk, s->blocker); 808 } --- 213 unchanged lines hidden --- |