On 07/17/2018 08:14 AM, Peter Krempa wrote: > Extract the (possible) removal of the PR backend and daemon into a > separate helper which enters monitor on it's own. This simplifies the > code and allows reuse of this function in the future e.g. for blockjobs > where removing a image with PR may result into PR not being necessary. > > Since the PR is not used often the overhead of entering monitor again > should be negligible. > > Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> > --- > src/qemu/qemu_hotplug.c | 49 ++++++++++++++++++++++++++++++++++++++----------- > 1 file changed, 38 insertions(+), 11 deletions(-) > > diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c > index 3ee74c8e40..57ab753974 100644 > --- a/src/qemu/qemu_hotplug.c > +++ b/src/qemu/qemu_hotplug.c > @@ -350,6 +350,41 @@ qemuDomainDiskAttachManagedPR(virDomainObjPtr vm, > } > > > +/** > + * qemuHotplugRemoveManagedPR: > + * @driver: QEMU driver object > + * @vm: domain object > + * @asyncJob: asynchronous job identifier > + * > + * Removes the managed PR object from @vm if the configuration does not require > + * it any more. > + */ > +static int > +qemuHotplugRemoveManagedPR(virQEMUDriverPtr driver, > + virDomainObjPtr vm, > + qemuDomainAsyncJob asyncJob) > +{ > + qemuDomainObjPrivatePtr priv = vm->privateData; > + virErrorPtr orig_err; > + virErrorPreserveLast(&orig_err); Coverity points out that orig_err is leaked at each subsequent return before the virErrorRestore below John > + > + if (!priv->prDaemonRunning || > + virDomainDefHasManagedPR(vm->def)) > + return 0; > + > + if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0) > + return -1; > + ignore_value(qemuMonitorDelObject(priv->mon, qemuDomainGetManagedPRAlias())); > + if (qemuDomainObjExitMonitor(driver, vm) < 0) > + return -1; > + > + qemuProcessKillManagedPRDaemon(vm); > + virErrorRestore(&orig_err); > + > + return 0; > +} > + > + [...] -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list