[CRIU] [PATCH 1/2] zdtm: Write .inprogress pidfile

Andrei Vagin avagin at virtuozzo.com
Wed Oct 26 11:16:23 PDT 2016


On Wed, Oct 26, 2016 at 11:51:29AM +0300, Pavel Emelyanov wrote:
> This one will contain pid of the task living in a sub-ns and
> waiting for the rest of the test to get daemonized.
> 
> Signed-off-by: Pavel Emelyanov <xemul at virtuozzo.com>
> ---
>  test/zdtm/lib/ns.c      | 12 ++++++++++++
>  test/zdtm/lib/test.c    |  1 -
>  test/zdtm/lib/zdtmtst.h |  2 ++
>  3 files changed, 14 insertions(+), 1 deletion(-)
> 
> diff --git a/test/zdtm/lib/ns.c b/test/zdtm/lib/ns.c
> index acf4a31..fa6ee86 100644
> --- a/test/zdtm/lib/ns.c
> +++ b/test/zdtm/lib/ns.c
> @@ -362,6 +362,7 @@ void ns_create(int argc, char **argv)
>  	int ret, status;
>  	struct ns_exec_args args;
>  	int flags;
> +	char *pidf;
>  
>  	args.argc = argc;
>  	args.argv = argv;
> @@ -416,6 +417,14 @@ void ns_create(int argc, char **argv)
>  	}
>  	shutdown(args.status_pipe[0], SHUT_WR);
>  
> +	pidf = pidfile;
> +	pidfile = malloc(strlen(pidfile) + 13);
> +	sprintf(pidfile, "%s%s", pidf, INPROGRESS);

Why do we need another pid file? Why is it bad to write pidfile (without
INPROGRESS)?

> +	if (write_pidfile(pid)) {
> +		fprintf(stderr, "Preparations fail\n");
> +		exit(1);
> +	}
> +
>  	status = 1;
>  	ret = read(args.status_pipe[0], &status, sizeof(status));
>  	if (ret != sizeof(status) || status) {
> @@ -428,6 +437,9 @@ void ns_create(int argc, char **argv)
>  		exit(1);
>  	}
>  
> +	unlink(pidfile);
> +	pidfile = pidf;
> +
>  	if (write_pidfile(pid))
>  		exit(1);
>  
> diff --git a/test/zdtm/lib/test.c b/test/zdtm/lib/test.c
> index db7118d..a3576a5 100644
> --- a/test/zdtm/lib/test.c
> +++ b/test/zdtm/lib/test.c
> @@ -41,7 +41,6 @@ int test_fork_id(int id)
>  
>  static int cwd = -1;
>  
> -#define INPROGRESS ".inprogress"
>  static void test_fini(void)
>  {
>  	char path[PATH_MAX];
> diff --git a/test/zdtm/lib/zdtmtst.h b/test/zdtm/lib/zdtmtst.h
> index 8a6f6ba..3f9f550 100644
> --- a/test/zdtm/lib/zdtmtst.h
> +++ b/test/zdtm/lib/zdtmtst.h
> @@ -4,6 +4,8 @@
>  #include <sys/types.h>
>  #include <unistd.h>
>  
> +#define INPROGRESS ".inprogress"
> +
>  #ifndef PAGE_SIZE
>  # define PAGE_SIZE (unsigned int)(sysconf(_SC_PAGESIZE))
>  #endif
> -- 
> 2.5.0
> 
> _______________________________________________
> CRIU mailing list
> CRIU at openvz.org
> https://lists.openvz.org/mailman/listinfo/criu


More information about the CRIU mailing list