[libvirt] [v2 RESEND 3/3] qemu: Switch code to use new agent job APIs
Jiri Denemark
jdenemar at redhat.com
Tue Jun 19 17:55:38 UTC 2018
On Tue, Jun 19, 2018 at 19:03:24 +0200, Michal Prívozník wrote:
> On 06/19/2018 05:05 PM, Jiri Denemark wrote:
> > On Tue, Jun 19, 2018 at 08:38:02 +0200, Michal Privoznik wrote:
> >> There are two sets of functions here:
> >> 1) some functions talk on both monitor and agent monitor,
> >> 2) some functions only talk on agent monitor.
> >>
> >> For functions from set 1) we need to use
> >> qemuDomainObjBeginJobWithAgent() and for functions from set 2) we
> >> need to use qemuDomainObjBeginAgentJob() only.
> >>
> >> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> >> ---
> >> src/qemu/qemu_driver.c | 91 ++++++++++++++++++++++++++++++++------------------
> >> 1 file changed, 58 insertions(+), 33 deletions(-)
> >>
> >> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> >> index 3abbe41895..cffd4c928a 100644
> >> --- a/src/qemu/qemu_driver.c
> >> +++ b/src/qemu/qemu_driver.c
...
> >> @@ -4949,6 +4967,7 @@ qemuDomainSetVcpusFlags(virDomainPtr dom,
> >> virDomainDefPtr def;
> >> virDomainDefPtr persistentDef;
> >> bool hotpluggable = !!(flags & VIR_DOMAIN_VCPU_HOTPLUGGABLE);
> >> + bool useAgent = !!(flags & VIR_DOMAIN_VCPU_GUEST);
> >> int ret = -1;
> >>
> >> virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
> >> @@ -4963,13 +4982,14 @@ qemuDomainSetVcpusFlags(virDomainPtr dom,
> >> if (virDomainSetVcpusFlagsEnsureACL(dom->conn, vm->def, flags) < 0)
> >> goto cleanup;
> >>
> >> - if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
> >> + if ((!useAgent && qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) ||
> >> + (useAgent && qemuDomainObjBeginAgentJob(driver, vm, QEMU_AGENT_JOB_MODIFY) < 0))
> >> goto cleanup;
> >
> > And here.
>
> Actually no. This one is different to the previous two places. This one
> is either grab domain job OR agent job but not both at the same time
> (which is what previous places do).
Ah right, I misread qemuDomainObjBeginAgentJob as
qemuDomainObjBeginJobWithAgent. In this case, I'd just modify the code a
bit to make it clearer the two cases are mutually exclusive, e.g.:
int rc;
if (useAgent)
rc = qemuDomainObjBeginAgentJob();
else
rc = qemuDomainObjBeginJob();
if (rc < 0)
goto cleanup;
Jirka
More information about the libvir-list
mailing list