Revision f8b6cc00 hw/ide/qdev.c
b/hw/ide/qdev.c | ||
---|---|---|
39 | 39 |
IDEDeviceInfo *info = DO_UPCAST(IDEDeviceInfo, qdev, base); |
40 | 40 |
IDEBus *bus = DO_UPCAST(IDEBus, qbus, qdev->parent_bus); |
41 | 41 |
|
42 |
if (!dev->conf.dinfo) {
|
|
42 |
if (!dev->conf.bs) {
|
|
43 | 43 |
fprintf(stderr, "%s: no drive specified\n", qdev->info->name); |
44 | 44 |
goto err; |
45 | 45 |
} |
... | ... | |
83 | 83 |
|
84 | 84 |
dev = qdev_create(&bus->qbus, "ide-drive"); |
85 | 85 |
qdev_prop_set_uint32(dev, "unit", unit); |
86 |
qdev_prop_set_drive(dev, "drive", drive); |
|
86 |
qdev_prop_set_drive(dev, "drive", drive->bdrv);
|
|
87 | 87 |
qdev_init_nofail(dev); |
88 | 88 |
return DO_UPCAST(IDEDevice, qdev, dev); |
89 | 89 |
} |
... | ... | |
99 | 99 |
IDEBus *bus = DO_UPCAST(IDEBus, qbus, dev->qdev.parent_bus); |
100 | 100 |
IDEState *s = bus->ifs + dev->unit; |
101 | 101 |
const char *serial; |
102 |
DriveInfo *dinfo; |
|
102 | 103 |
|
103 | 104 |
serial = dev->serial; |
104 | 105 |
if (!serial) { |
105 | 106 |
/* try to fall back to value set with legacy -drive serial=... */ |
106 |
serial = dev->conf.dinfo->serial; |
|
107 |
dinfo = drive_get_by_blockdev(dev->conf.bs); |
|
108 |
if (*dinfo->serial) { |
|
109 |
serial = dinfo->serial; |
|
110 |
} |
|
107 | 111 |
} |
108 | 112 |
|
109 |
ide_init_drive(s, dev->conf.dinfo, dev->version, serial);
|
|
113 |
ide_init_drive(s, dev->conf.bs, dev->version, serial);
|
|
110 | 114 |
|
111 | 115 |
if (!dev->version) { |
112 | 116 |
dev->version = qemu_strdup(s->version); |
Also available in: Unified diff