diff options
Diffstat (limited to 'hw/ide')
-rw-r--r-- | hw/ide/piix.c | 5 | ||||
-rw-r--r-- | hw/ide/qdev.c | 4 |
2 files changed, 6 insertions, 3 deletions
diff --git a/hw/ide/piix.c b/hw/ide/piix.c index ec93977e53..0e87e51148 100644 --- a/hw/ide/piix.c +++ b/hw/ide/piix.c @@ -180,9 +180,10 @@ int pci_piix3_xen_ide_unplug(DeviceState *dev) di = drive_get_by_index(IF_IDE, i); if (di != NULL && !di->media_cd) { BlockBackend *blk = blk_by_legacy_dinfo(di); - DeviceState *ds = bdrv_get_attached_dev(di->bdrv); + BlockDriverState *bs = blk_bs(blk); + DeviceState *ds = bdrv_get_attached_dev(bs); if (ds) { - bdrv_detach_dev(di->bdrv, ds); + bdrv_detach_dev(bs, ds); } pci_ide->bus[di->bus].ifs[di->unit].bs = NULL; blk_unref(blk); diff --git a/hw/ide/qdev.c b/hw/ide/qdev.c index 9814ef0d24..816167b99b 100644 --- a/hw/ide/qdev.c +++ b/hw/ide/qdev.c @@ -20,6 +20,7 @@ #include "sysemu/dma.h" #include "qemu/error-report.h" #include <hw/ide/internal.h> +#include "sysemu/block-backend.h" #include "sysemu/blockdev.h" #include "hw/block/block.h" #include "sysemu/sysemu.h" @@ -117,7 +118,8 @@ IDEDevice *ide_create_drive(IDEBus *bus, int unit, DriveInfo *drive) dev = qdev_create(&bus->qbus, drive->media_cd ? "ide-cd" : "ide-hd"); qdev_prop_set_uint32(dev, "unit", unit); - qdev_prop_set_drive_nofail(dev, "drive", drive->bdrv); + qdev_prop_set_drive_nofail(dev, "drive", + blk_bs(blk_by_legacy_dinfo(drive))); qdev_init_nofail(dev); return DO_UPCAST(IDEDevice, qdev, dev); } |