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