mirror of https://github.com/xemu-project/xemu.git
Fix release_drive on unplugged devices (pci_piix3_xen_ide_unplug)
pci_piix3_xen_ide_unplug should completely unhook the unplugged IDEDevice from the corresponding BlockBackend, otherwise the next call to release_drive will try to detach the drive again. Suggested-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
This commit is contained in:
parent
2a3612ccc1
commit
6cd387833d
|
@ -169,6 +169,7 @@ int pci_piix3_xen_ide_unplug(DeviceState *dev)
|
||||||
PCIIDEState *pci_ide;
|
PCIIDEState *pci_ide;
|
||||||
DriveInfo *di;
|
DriveInfo *di;
|
||||||
int i;
|
int i;
|
||||||
|
IDEDevice *idedev;
|
||||||
|
|
||||||
pci_ide = PCI_IDE(dev);
|
pci_ide = PCI_IDE(dev);
|
||||||
|
|
||||||
|
@ -181,6 +182,12 @@ int pci_piix3_xen_ide_unplug(DeviceState *dev)
|
||||||
blk_detach_dev(blk, ds);
|
blk_detach_dev(blk, ds);
|
||||||
}
|
}
|
||||||
pci_ide->bus[di->bus].ifs[di->unit].blk = NULL;
|
pci_ide->bus[di->bus].ifs[di->unit].blk = NULL;
|
||||||
|
if (!(i % 2)) {
|
||||||
|
idedev = pci_ide->bus[di->bus].master;
|
||||||
|
} else {
|
||||||
|
idedev = pci_ide->bus[di->bus].slave;
|
||||||
|
}
|
||||||
|
idedev->conf.blk = NULL;
|
||||||
blk_unref(blk);
|
blk_unref(blk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue