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(a)redhat.com>
>
> Export the required helpers and add backend code to hotplug RNG devices.
>
> Signed-off-by: Luyao Huang <lhuang(a)redhat.com>
> Signed-off-by: Peter Krempa <pkrempa(a)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