[libvirt] [PATCH 1/2] qemu: Remove redundant parameter from qemuAgentSend

Michal Privoznik mprivozn at redhat.com
Thu Aug 30 14:25:12 UTC 2012


On 30.08.2012 15:12, Jiri Denemark wrote:
> The @timeout parameter of qemuAgentSend is both redundant and confusing.
> This patch should not result in any functional changes.
> ---
>  src/qemu/qemu_agent.c | 38 ++++++++++++++++++++------------------
>  1 file changed, 20 insertions(+), 18 deletions(-)
> 
> diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
> index aaff9fc..6a7a0b4 100644
> --- a/src/qemu/qemu_agent.c
> +++ b/src/qemu/qemu_agent.c
> @@ -832,19 +832,22 @@ void qemuAgentClose(qemuAgentPtr mon)
>      virObjectUnref(mon);
>  }
>  
> -#define QEMU_AGENT_WAIT_TIME (1000ull * 5)
> +#define QEMU_AGENT_WAIT_TIME 5
>  
>  /**
>   * qemuAgentSend:
>   * @mon: Monitor
>   * @msg: Message
> - * @timeout: use timeout?
> - * @seconds: timeout seconds. if VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT and
> - *           @timeout is true, use default value.
> + * @seconds: number of seconds to wait for the result, it can be either
> + *           -2, -1, 0 or positive.
>   *
> - * Send @msg to agent @mon.
> - * Wait max QEMU_AGENT_WAIT_TIME for agent
> - * to reply.
> + * Send @msg to agent @mon. If @seconds is equal to
> + * VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK(-2), this function will block forever
> + * waiting for the result. The value of
> + * VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT(-1) means use default timeout value
> + * and VIR_DOMAIN_QEMU_AGENT_COMMAND_NOWAIT(0) makes this this function return
> + * immediately without waiting. Any positive value means the number of seconds
> + * to wait for the result.
>   *
>   * Returns: 0 on success,
>   *          -2 on timeout,
> @@ -852,11 +855,10 @@ void qemuAgentClose(qemuAgentPtr mon)
>   */
>  static int qemuAgentSend(qemuAgentPtr mon,
>                           qemuAgentMessagePtr msg,
> -                         bool timeout,
>                           int seconds)
>  {
>      int ret = -1;
> -    unsigned long long now, then = 0;
> +    unsigned long long then = 0;
>  
>      /* Check whether qemu quit unexpectedly */
>      if (mon->lastError.code != VIR_ERR_OK) {
> @@ -866,21 +868,21 @@ static int qemuAgentSend(qemuAgentPtr mon,
>          return -1;
>      }
>  
> -    if (timeout) {
> +    if (seconds > VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK) {
> +        unsigned long long now;
>          if (virTimeMillisNow(&now) < 0)
>              return -1;
> -        if (!(seconds >= 0 || seconds == VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT))
> -            return -1;
> -        then = now + (seconds == VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT ?
> -                      QEMU_AGENT_WAIT_TIME : seconds * 1000ull);
> +        if (seconds == VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT)
> +            seconds = QEMU_AGENT_WAIT_TIME;
> +        then = now + seconds * 1000ull;
>      }
>  
>      mon->msg = msg;
>      qemuAgentUpdateWatch(mon);
>  
>      while (!mon->msg->finished) {
> -        if ((timeout && virCondWaitUntil(&mon->notify, &mon->lock, then) < 0) ||
> -            (!timeout && virCondWait(&mon->notify, &mon->lock) < 0)) {
> +        if ((then && virCondWaitUntil(&mon->notify, &mon->lock, then) < 0) ||
> +            (!then && virCondWait(&mon->notify, &mon->lock) < 0)) {
>              if (errno == ETIMEDOUT) {
>                  virReportError(VIR_ERR_AGENT_UNRESPONSIVE, "%s",
>                                 _("Guest agent not available for now"));
> @@ -945,7 +947,7 @@ qemuAgentGuestSync(qemuAgentPtr mon)
>  
>      VIR_DEBUG("Sending guest-sync command with ID: %llu", id);
>  
> -    send_ret = qemuAgentSend(mon, &sync_msg, true,
> +    send_ret = qemuAgentSend(mon, &sync_msg,
>                               VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT);
>  
>      VIR_DEBUG("qemuAgentSend returned: %d", send_ret);
> @@ -1015,7 +1017,7 @@ qemuAgentCommand(qemuAgentPtr mon,
>  
>      VIR_DEBUG("Send command '%s' for write, seconds = %d", cmdstr, seconds);
>  
> -    ret = qemuAgentSend(mon, &msg, seconds < -1 ? false : true, seconds);
> +    ret = qemuAgentSend(mon, &msg, seconds);
>  
>      VIR_DEBUG("Receive command reply ret=%d rxObject=%p",
>                ret, msg.rxObject);
> 

ACK

Michal




More information about the libvir-list mailing list