[CRIU] [PATCH RFC] zdtm: Cleanup binfmt_misc entries in case of fail

Kirill Tkhai ktkhai at virtuozzo.com
Mon Nov 28 08:47:30 PST 2016


Add binfmt_misc hook to cleanup registered entries even
in case of test failed.

Q:Guys, is there a better way to get test's filename option value,
than I used in zdtm.py?

Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
---
 test/zdtm.py                      |    2 +-
 test/zdtm/static/binfmt_misc.c    |    4 ++--
 test/zdtm/static/binfmt_misc.hook |   27 +++++++++++++++++++++++++++
 3 files changed, 30 insertions(+), 3 deletions(-)
 create mode 100755 test/zdtm/static/binfmt_misc.hook

diff --git a/test/zdtm.py b/test/zdtm.py
index 7ca4bbf..4532d83 100755
--- a/test/zdtm.py
+++ b/test/zdtm.py
@@ -962,7 +962,7 @@ join_ns_file = '/run/netns/zdtm_netns'
 	hname = test.getname() + '.hook'
 	if os.access(hname, os.X_OK):
 		print "Running %s(%s)" % (hname, ', '.join(args))
-		hook = subprocess.Popen([hname] + args)
+		hook = subprocess.Popen([hname] + args + ["--name", os.path.basename(test.getname())])
 		if hook.wait() != 0:
 			raise test_fail_exc("hook " + " ".join(args))
 
diff --git a/test/zdtm/static/binfmt_misc.c b/test/zdtm/static/binfmt_misc.c
index 62b9b51..ef362c2 100644
--- a/test/zdtm/static/binfmt_misc.c
+++ b/test/zdtm/static/binfmt_misc.c
@@ -104,8 +104,8 @@ int main(int argc, char **argv)
 
 	test_init(argc, argv);
 
-	snprintf(NAME[0], PATH_MAX, "%s_magic", filename);
-	snprintf(NAME[1], PATH_MAX, "%s_extention", filename);
+	snprintf(NAME[0], PATH_MAX, "criu_zdtm_%s_magic", filename);
+	snprintf(NAME[1], PATH_MAX, "criu_zdtm_%s_extention", filename);
 
 	if (mkdir(dirname, 0777)) {
 		fail("mkdir");
diff --git a/test/zdtm/static/binfmt_misc.hook b/test/zdtm/static/binfmt_misc.hook
new file mode 100755
index 0000000..a0f86ff
--- /dev/null
+++ b/test/zdtm/static/binfmt_misc.hook
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+[ "$1" == "--clean" ] || exit 0
+
+if [ "$#" -ne 3 -o "$2" != "--name" ]; then
+	echo "Wrong arguments were passed"
+	exit -1
+fi
+
+name=$3
+
+tname=$(mktemp -d binfmt_misc.XXXXXX)
+mount -t binfmt_misc none $tname
+
+echo "Cleaning $tname: $@"
+set +e
+if [ -e $tname/criu_zdtm_${name}.test_magic ]; then
+	echo -1 > $tname/criu_zdtm_${name}.test_magic
+fi
+
+if [ -e $tname/criu_zdtm_${name}.test_extention ]; then
+	echo -1 > $tname/criu_zdtm_${name}.test_extention
+fi
+set -e
+
+umount "$tname"
+rmdir "$tname"



More information about the CRIU mailing list