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

Pavel Emelyanov xemul at virtuozzo.com
Wed Oct 26 01:51:29 PDT 2016


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);
+	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



More information about the CRIU mailing list