Commit 44a109c1 authored by Li Qiang's avatar Li Qiang Committed by John Snow
Browse files

ide: qdev: register ide bus unrealize function



we have an idebus unrealize function, but it was being
registered as the unrealize function for the IDE Device,
so it was not getting invoked on device teardown because
nothing is "unrealizing" the IDE devices themselves.

Suggested-by: default avatarJohn Snow <jsnow@redhat.com>
Signed-off-by: default avatarLi Qiang <liqiang6-s@360.cn>
Reviewed-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
Message-id: 1488449293-80280-2-git-send-email-liqiang6-s@360.cn
Signed-off-by: default avatarJohn Snow <jsnow@redhat.com>
parent 1883ff34
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -31,7 +31,7 @@
/* --------------------------------- */

static char *idebus_get_fw_dev_path(DeviceState *dev);
static void idebus_unrealize(DeviceState *qdev, Error **errp);
static void idebus_unrealize(BusState *qdev, Error **errp);

static Property ide_props[] = {
    DEFINE_PROP_UINT32("unit", IDEDevice, unit, -1),
@@ -43,14 +43,15 @@ static void ide_bus_class_init(ObjectClass *klass, void *data)
    BusClass *k = BUS_CLASS(klass);

    k->get_fw_dev_path = idebus_get_fw_dev_path;
    k->unrealize = idebus_unrealize;
}

static void idebus_unrealize(DeviceState *qdev, Error **errp)
static void idebus_unrealize(BusState *bus, Error **errp)
{
    IDEBus *bus = DO_UPCAST(IDEBus, qbus, qdev->parent_bus);
    IDEBus *ibus = IDE_BUS(bus);

    if (bus->vmstate) {
        qemu_del_vm_change_state_handler(bus->vmstate);
    if (ibus->vmstate) {
        qemu_del_vm_change_state_handler(ibus->vmstate);
    }
}

@@ -370,7 +371,6 @@ static void ide_device_class_init(ObjectClass *klass, void *data)
    k->init = ide_qdev_init;
    set_bit(DEVICE_CATEGORY_STORAGE, k->categories);
    k->bus_type = TYPE_IDE_BUS;
    k->unrealize = idebus_unrealize;
    k->props = ide_props;
}