[libvirt] [PATCH 2/2] rpc: Rework timerActive logic in daemon

Michal Privoznik mprivozn at redhat.com
Fri Jul 10 09:06:34 UTC 2015


On 10.07.2015 10:49, Martin Kletzander wrote:
> Daemon used false logic for determining whether there were any clients.
> When the timer was inactive, it was activated if at least one of the
> servers did not have clients.  So the bool was being flipped there and
> back all the time in case there was one client, for example.
> 
> Initially introduced by fa1420736882.
> 
> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1240283
> 
> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> ---
>  src/rpc/virnetdaemon.c | 24 +++++++++---------------
>  1 file changed, 9 insertions(+), 15 deletions(-)
> 
> diff --git a/src/rpc/virnetdaemon.c b/src/rpc/virnetdaemon.c
> index 6b132823274c..19573c5f4c42 100644
> --- a/src/rpc/virnetdaemon.c
> +++ b/src/rpc/virnetdaemon.c
> @@ -682,23 +682,17 @@ virNetDaemonRun(virNetDaemonPtr dmn)
>           */
>          if (dmn->autoShutdownTimeout) {
>              if (timerActive) {
> -                for (i = 0; i < dmn->nservers; i++) {
> -                    if (virNetServerHasClients(dmn->servers[i])) {
> -                        VIR_DEBUG("Deactivating shutdown timer %d", timerid);
> -                        virEventUpdateTimeout(timerid, -1);
> -                        timerActive = false;
> -                        break;
> -                    }
> +                if (virNetDaemonHasClients(dmn)) {
> +                    VIR_DEBUG("Deactivating shutdown timer %d", timerid);
> +                    virEventUpdateTimeout(timerid, -1);
> +                    timerActive = false;
>                  }
>              } else {
> -                for (i = 0; i < dmn->nservers; i++) {
> -                    if (!virNetServerHasClients(dmn->servers[i])) {
> -                        VIR_DEBUG("Activating shutdown timer %d", timerid);
> -                        virEventUpdateTimeout(timerid,
> -                                              dmn->autoShutdownTimeout * 1000);
> -                        timerActive = true;
> -                        break;
> -                    }
> +                if (virNetDaemonHasClients(dmn)) {

I believe this condition needs to be negated.

> +                    VIR_DEBUG("Activating shutdown timer %d", timerid);
> +                    virEventUpdateTimeout(timerid,
> +                                          dmn->autoShutdownTimeout * 1000);
> +                    timerActive = true;
>                  }
>              }
>          }
> 

Good catch! ACK series.

Michal




More information about the libvir-list mailing list