From acf8286a00bf043ad1b7d34d312d08de8b77a810 Mon Sep 17 00:00:00 2001 From: Pavel Tikhomirov Date: Mon, 15 Jul 2024 14:45:59 +0800 Subject: [PATCH] zdtm: verify that criu repo file system allows resolving device files We put several device files into zdtm container through its root file system which is the same file system criu git resides in. We do it like this to overcome inability to create character and block device files in user namespaces. So even if we put those device files into zdtm container in any other way, in 'uns' flavor CRIU would not be able to restore those device files. Other option can be - creating auxiliary tmpfs mount and add it into zdtm container as external mount, but that looks like an overkill for this problem. Let's print a clear error so that user can either mount current file system without 'nodev" or put criu somewhere else. Fixes: #2441 Signed-off-by: Pavel Tikhomirov --- test/zdtm.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/zdtm.py b/test/zdtm.py index df23ea03d9..a654dae18f 100755 --- a/test/zdtm.py +++ b/test/zdtm.py @@ -283,6 +283,14 @@ def init(self, l_bins, x_bins): self.__construct_root() os.mknod(self.root + "/.constructed", stat.S_IFREG | 0o600) + try: + with open(self.root + "/dev/null") as devnull: + pass + except IOError as e: + if e.errno != errno.EACCES: + raise e + raise test_fail_exc("The filesystem of CRIU repo should not have 'nodev' flag. Consider putting CRIU on appropriate file system to run ZDTM.") + for b in l_bins: self.__copy_libs(b) for b in x_bins: