Message ID | 1424460000-2239-4-git-send-email-armbru@redhat.com |
---|---|
State | New |
Headers | show |
On Fri, Feb 20, 2015 at 11:19 AM, Markus Armbruster <armbru@redhat.com> wrote: > When setting "realized" fails, scsi_bus_legacy_add_drive() passes the > error to qerror_report_err(), then returns an unspecific "Setting > drive property failed" error, which is reported further up the call > chain. > > Example: > > $ qemu-system-x86_64 -nodefaults -S -display none \ > > -drive if=scsi,id=foo,file=tmp.qcow2 -global isa-fdc.driveA=foo > qemu-system-x86_64: -drive if=scsi,id=foo,file=tmp.qcow2: Property 'scsi-disk.drive' can't take value 'foo', it's in use > qemu-system-x86_64: Setting drive property failed > qemu-system-x86_64: Device initialization failed > qemu-system-x86_64: Initialization of device lsi53c895a failed > > Clean up the obvious way: simply return the original error to the > caller. Gets rid of the second message in the above error cascade. > > Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> > --- > hw/scsi/scsi-bus.c | 5 +---- > 1 file changed, 1 insertion(+), 4 deletions(-) > > diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c > index 61c595f..bd2c0e4 100644 > --- a/hw/scsi/scsi-bus.c > +++ b/hw/scsi/scsi-bus.c > @@ -7,7 +7,6 @@ > #include "sysemu/blockdev.h" > #include "trace.h" > #include "sysemu/dma.h" > -#include "qapi/qmp/qerror.h" > > static char *scsibus_get_dev_path(DeviceState *dev); > static char *scsibus_get_fw_dev_path(DeviceState *dev); > @@ -245,9 +244,7 @@ SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, BlockBackend *blk, > } > qdev_prop_set_drive(dev, "drive", blk, &err); > if (err) { > - qerror_report_err(err); > - error_free(err); > - error_setg(errp, "Setting drive property failed"); > + error_propagate(errp, err); > object_unparent(OBJECT(dev)); > return NULL; > } > -- > 1.9.3 > >
diff --git a/hw/scsi/scsi-bus.c b/hw/scsi/scsi-bus.c index 61c595f..bd2c0e4 100644 --- a/hw/scsi/scsi-bus.c +++ b/hw/scsi/scsi-bus.c @@ -7,7 +7,6 @@ #include "sysemu/blockdev.h" #include "trace.h" #include "sysemu/dma.h" -#include "qapi/qmp/qerror.h" static char *scsibus_get_dev_path(DeviceState *dev); static char *scsibus_get_fw_dev_path(DeviceState *dev); @@ -245,9 +244,7 @@ SCSIDevice *scsi_bus_legacy_add_drive(SCSIBus *bus, BlockBackend *blk, } qdev_prop_set_drive(dev, "drive", blk, &err); if (err) { - qerror_report_err(err); - error_free(err); - error_setg(errp, "Setting drive property failed"); + error_propagate(errp, err); object_unparent(OBJECT(dev)); return NULL; }