[PATCH] qemu: Fix guest-sync response time in qga command

ray posted 1 patch 2 months ago
Failed in applying to current master (apply log)
src/qemu/qemu_agent.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
[PATCH] qemu: Fix guest-sync response time in qga command
Posted by ray 2 months ago
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>
---
 src/qemu/qemu_agent.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
index f9bcf38dfb..47d735dfa3 100644
--- a/src/qemu/qemu_agent.c
+++ b/src/qemu/qemu_agent.c
@@ -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,9 @@ 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 +855,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 +1029,7 @@ qemuAgentCommandFull(qemuAgent *agent,
         goto cleanup;
     }
 
-    if (qemuAgentGuestSync(agent) < 0)
+    if (qemuAgentGuestSync(agent, seconds) < 0)
         goto cleanup;
 
     if (!(cmdstr = virJSONValueToString(cmd, false)))
-- 
2.43.0
_______________________________________________
Devel mailing list -- devel@lists.libvirt.org
To unsubscribe send an email to devel-leave@lists.libvirt.org
Re: [PATCH] qemu: Fix guest-sync response time in qga command
Posted by Michal Prívozník 2 months ago
On 2/21/24 15:45, ray wrote:
> 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>
> ---
>  src/qemu/qemu_agent.c | 15 +++++++++++----
>  1 file changed, 11 insertions(+), 4 deletions(-)

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>

and merged. Congratulations on your first libvirt contribution!

Michal
_______________________________________________
Devel mailing list -- devel@lists.libvirt.org
To unsubscribe send an email to devel-leave@lists.libvirt.org