
On Mon, Feb 09, 2015 at 16:57:17 +0100, Ján Tomko wrote:
On Fri, Feb 06, 2015 at 04:32:25PM +0100, Peter Krempa wrote:
From: Luyao Huang <lhuang@redhat.com>
Export the required helpers and add backend code to hotplug RNG devices.
Signed-off-by: Luyao Huang <lhuang@redhat.com> Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- src/qemu/qemu_command.c | 2 +- src/qemu/qemu_command.h | 4 ++ src/qemu/qemu_driver.c | 8 +++- src/qemu/qemu_hotplug.c | 99 +++++++++++++++++++++++++++++++++++++++++++++++++ src/qemu/qemu_hotplug.h | 3 ++ 5 files changed, 114 insertions(+), 2 deletions(-)
-- 8< 8< 8< --
+ + /* attach the device - up to a 3 stage process */ + qemuDomainObjEnterMonitor(driver, vm); + + if (rng->backend == VIR_DOMAIN_RNG_BACKEND_EGD && + qemuMonitorAttachCharDev(priv->mon, charAlias, + rng->source.chardev) < 0) + goto failchardev; + + if (qemuMonitorAddObject(priv->mon, type, objAlias, props) < 0) + goto failbackend; + + if (qemuMonitorAddDevice(priv->mon, devstr) < 0) + goto failfrontend; + + if (qemuDomainObjExitMonitor(driver, vm) < 0) { + vm = NULL; + goto cleanup; + }
I know an OOM error at this exact location is not that likely, but it would be nicer to prealloc the space in vm->def before entering the monitor so that the operation below cannot fail, like we do when hotplugging other devices.
Sigh. Okay. I've switched to the preallocation approach as we do usually in this case.
Jan
Peter