On Wed, Jul 05, 2023 at 09:15:23AM +0200, Stefano Garzarella wrote: > This reverts commit 8cc5583abe6419e7faaebc9fbd109f34f4c850f2. > > That commit causes several problems in Linux as described in the BZ. > In particular, after a while, other devices on the bus are no longer > usable even if those devices are not affected by the hotunplug. > This may be a problem in Linux, but we have not been able to identify > it so far. So better to revert this patch until we find a solution. > > Also, Oracle, which initially proposed this patch for a problem with > Solaris, seems to have already reversed it downstream: > https://linux.oracle.com/errata/ELSA-2023-12065.html > > Suggested-by: Thomas Huth <th...@redhat.com> > Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=2176702 > Cc: qemu-sta...@nongnu.org > Cc: Mark Kanda <mark.ka...@oracle.com> > Signed-off-by: Stefano Garzarella <sgarz...@redhat.com>
OK guys we are reverting this? > --- > include/hw/scsi/scsi.h | 1 - > hw/scsi/scsi-bus.c | 18 ------------------ > hw/scsi/virtio-scsi.c | 2 -- > 3 files changed, 21 deletions(-) > > diff --git a/include/hw/scsi/scsi.h b/include/hw/scsi/scsi.h > index e2bb1a2fbf..7c8adf10b1 100644 > --- a/include/hw/scsi/scsi.h > +++ b/include/hw/scsi/scsi.h > @@ -198,7 +198,6 @@ SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, > BlockBackend *blk, > BlockdevOnError rerror, > BlockdevOnError werror, > const char *serial, Error **errp); > -void scsi_bus_set_ua(SCSIBus *bus, SCSISense sense); > void scsi_bus_legacy_handle_cmdline(SCSIBus *bus); > > SCSIRequest *scsi_req_alloc(const SCSIReqOps *reqops, SCSIDevice *d, > diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c > index f80f4cb4fc..42a915f8b7 100644 > --- a/hw/scsi/scsi-bus.c > +++ b/hw/scsi/scsi-bus.c > @@ -1617,24 +1617,6 @@ static int scsi_ua_precedence(SCSISense sense) > return (sense.asc << 8) | sense.ascq; > } > > -void scsi_bus_set_ua(SCSIBus *bus, SCSISense sense) > -{ > - int prec1, prec2; > - if (sense.key != UNIT_ATTENTION) { > - return; > - } > - > - /* > - * Override a pre-existing unit attention condition, except for a more > - * important reset condition. > - */ > - prec1 = scsi_ua_precedence(bus->unit_attention); > - prec2 = scsi_ua_precedence(sense); > - if (prec2 < prec1) { > - bus->unit_attention = sense; > - } > -} > - > void scsi_device_set_ua(SCSIDevice *sdev, SCSISense sense) > { > int prec1, prec2; > diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c > index 45b95ea070..1f56607100 100644 > --- a/hw/scsi/virtio-scsi.c > +++ b/hw/scsi/virtio-scsi.c > @@ -1080,7 +1080,6 @@ static void virtio_scsi_hotplug(HotplugHandler > *hotplug_dev, DeviceState *dev, > > virtio_scsi_acquire(s); > virtio_scsi_push_event(s, &info); > - scsi_bus_set_ua(&s->bus, SENSE_CODE(REPORTED_LUNS_CHANGED)); > virtio_scsi_release(s); > } > } > @@ -1112,7 +1111,6 @@ static void virtio_scsi_hotunplug(HotplugHandler > *hotplug_dev, DeviceState *dev, > if (virtio_vdev_has_feature(vdev, VIRTIO_SCSI_F_HOTPLUG)) { > virtio_scsi_acquire(s); > virtio_scsi_push_event(s, &info); > - scsi_bus_set_ua(&s->bus, SENSE_CODE(REPORTED_LUNS_CHANGED)); > virtio_scsi_release(s); > } > } > -- > 2.41.0