aboutsummaryrefslogtreecommitdiff
path: root/hw/scsi-disk.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw/scsi-disk.c')
-rw-r--r--hw/scsi-disk.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index d76e640..e900eff 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -1043,26 +1043,24 @@ static void scsi_destroy(SCSIDevice *dev)
SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, dev);
scsi_disk_purge_requests(s);
- blockdev_mark_auto_del(s->qdev.conf.dinfo->bdrv);
+ blockdev_mark_auto_del(s->qdev.conf.bs);
}
static int scsi_disk_initfn(SCSIDevice *dev)
{
SCSIDiskState *s = DO_UPCAST(SCSIDiskState, qdev, dev);
+ DriveInfo *dinfo;
- if (!s->qdev.conf.dinfo || !s->qdev.conf.dinfo->bdrv) {
+ if (!s->qdev.conf.bs) {
error_report("scsi-disk: drive property not set");
return -1;
}
- s->bs = s->qdev.conf.dinfo->bdrv;
+ s->bs = s->qdev.conf.bs;
if (!s->serial) {
- if (*dev->conf.dinfo->serial) {
- /* try to fall back to value set with legacy -drive serial=... */
- s->serial = qemu_strdup(dev->conf.dinfo->serial);
- } else {
- s->serial = qemu_strdup("0");
- }
+ /* try to fall back to value set with legacy -drive serial=... */
+ dinfo = drive_get_by_blockdev(s->bs);
+ s->serial = qemu_strdup(*dinfo->serial ? dinfo->serial : "0");
}
if (!s->version) {