From: Michal Privoznik Date: Mon, 7 Nov 2022 17:17:12 +0000 (+0100) Subject: qemu_agent: Bring back single sync X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=91ef81a378062f0fb52fde11d29ec5cfcd33972c;p=libvirt.git qemu_agent: Bring back single sync Historically, we had no idea whether the qemu-ga running inside the guest was running or not. Or whether it crashed in the middle of reading of a command. That's why we issued guest-sync prior any intended command, to make the agent flush any partially read JSON and reset its state machine. But with VSERPORT_CHANGE event we know when the guest agent (dis-)connects and thus can issue the sync command just once for each 'connection'. Whether the agent is synced is tracked in agent->inSync member, which used to be set to true upon successful sync. But after rework in v8.0.0-rc1~361 that line is gone, leaving us with using the historic approach basically. Fixes: cad84fd51eaac5e3bfdf441f9986e1f2639a0828 Signed-off-by: Michal Privoznik Reviewed-by: Ján Tomko --- diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c index 0d77a2f90d..94782f2bc9 100644 --- a/src/qemu/qemu_agent.c +++ b/src/qemu/qemu_agent.c @@ -869,16 +869,20 @@ qemuAgentGuestSync(qemuAgent *agent) return -1; /* successfully sync'd */ - if (rc == 1) + if (rc == 1) { + agent->inSync = true; return 0; + } /* send another sync */ if ((rc = qemuAgentGuestSyncSend(agent, timeout, false)) < 0) return -1; /* successfully sync'd */ - if (rc == 1) + if (rc == 1) { + agent->inSync = true; return 0; + } if (agent->running) virReportError(VIR_ERR_INTERNAL_ERROR, "%s",