[libvirt] [PATCH] util:Fix with process number and pid file do not match

Michal Prívozník mprivozn at redhat.com
Tue Jul 3 07:36:19 UTC 2018


On 07/02/2018 01:08 PM, dubo163 wrote:
> From: dubobo <dubobo at didichuxing.com>
> 
> the libvirtd pid file is not match the os process pid number
> which is smaller than before.
> 
> this would be exist if the libvirtd process coredump or the os
> process was killed which the next pid number is smaller.
> 
> you can be also edit the pid file to write the longer number than
> before,then restart the libvirtd service.
> 
> Signed-off-by: dubobo <dubobo at didichuxing.com>

I'm sorry, but this has to be your legal name, which I believe dubobo is
not. Also as I was pointed out earlier, the name of the author of the
patch has to be legal name.

> ---
>  src/util/virpidfile.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/src/util/virpidfile.c b/src/util/virpidfile.c
> index 58ab29f..8b0ff99 100644
> --- a/src/util/virpidfile.c
> +++ b/src/util/virpidfile.c
> @@ -445,6 +445,12 @@ int virPidFileAcquirePath(const char *path,
>      }
>  
>      snprintf(pidstr, sizeof(pidstr), "%lld", (long long) pid);
> +    if (ftruncate(fd, 0) < 0) {
> +        VIR_FORCE_CLOSE(fd);
> +        return -1;

So if ftruncate() fails, caller sees -1 but no error message. This is
not nice because users then have no idea what went wrong. All they see
is a failed attempt to start libvirtd. We need virReportSystemError() here.

> +    }
> +
> +    lseek(fd, 0, SEEK_SET);

This is pretty useless. Since open() nothing was written to/read from
the pidfile. So we don't really need to seek in it.

Michal




More information about the libvir-list mailing list