mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-11-10 07:20:02 +00:00
qemu: Fix guest-sync response time in qga command
The current implementation sets the guest-sync timeout to the smaller value between the default value (QEMU_AGENT_WAIT_TIME) and agent->timeout, without considering the timeout passed via the qga command. This patch enhances the guest-sync timeout logic to use the minimum value among the default value, agent->timeout, and the timeout passed via the qga command. Resolves: https://gitlab.com/libvirt/libvirt/-/issues/590 Signed-off-by: ray <honglei.wang@smartx.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
737e3daf5a
commit
04397de2a1
@ -835,6 +835,7 @@ qemuAgentGuestSyncSend(qemuAgent *agent,
|
||||
/**
|
||||
* qemuAgentGuestSync:
|
||||
* @agent: agent object
|
||||
* @seconds: qemu agent command timeout value
|
||||
*
|
||||
* Send guest-sync with unique ID
|
||||
* and wait for reply. If we get one, check if
|
||||
@ -844,9 +845,10 @@ qemuAgentGuestSyncSend(qemuAgent *agent,
|
||||
* -1 otherwise
|
||||
*/
|
||||
static int
|
||||
qemuAgentGuestSync(qemuAgent *agent)
|
||||
qemuAgentGuestSync(qemuAgent *agent,
|
||||
int seconds)
|
||||
{
|
||||
int timeout = VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT;
|
||||
int timeout = QEMU_AGENT_WAIT_TIME;
|
||||
int rc;
|
||||
|
||||
if (agent->inSync)
|
||||
@ -854,9 +856,15 @@ qemuAgentGuestSync(qemuAgent *agent)
|
||||
|
||||
/* if user specified a custom agent timeout that is lower than the
|
||||
* default timeout, use the shorter timeout instead */
|
||||
if ((agent->timeout >= 0) && (agent->timeout < QEMU_AGENT_WAIT_TIME))
|
||||
if ((agent->timeout >= 0) && (agent->timeout < timeout))
|
||||
timeout = agent->timeout;
|
||||
|
||||
/* If user specified a timeout parameter smaller than both default
|
||||
* value and agent->timeout in qga APIs(such as qemu-agent-command),
|
||||
* use the parameter timeout value */
|
||||
if ((seconds >= 0) && (seconds < timeout))
|
||||
timeout = seconds;
|
||||
|
||||
if ((rc = qemuAgentGuestSyncSend(agent, timeout, true)) < 0)
|
||||
return -1;
|
||||
|
||||
@ -1022,7 +1030,7 @@ qemuAgentCommandFull(qemuAgent *agent,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (qemuAgentGuestSync(agent) < 0)
|
||||
if (qemuAgentGuestSync(agent, seconds) < 0)
|
||||
goto cleanup;
|
||||
|
||||
if (!(cmdstr = virJSONValueToString(cmd, false)))
|
||||
|
Loading…
Reference in New Issue
Block a user