[CRIU] [PATCH 2/2] zdtm/mntns_deleted: check if c/r is fine with deleted directory ancestor
Pavel Tikhomirov
ptikhomirov at virtuozzo.com
Fri Feb 15 18:58:14 MSK 2019
Signed-off-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
---
test/zdtm/static/mntns_deleted.c | 39 +++++++++++++++++++++-----------
1 file changed, 26 insertions(+), 13 deletions(-)
diff --git a/test/zdtm/static/mntns_deleted.c b/test/zdtm/static/mntns_deleted.c
index 39f9d0b47..9ff3c484a 100644
--- a/test/zdtm/static/mntns_deleted.c
+++ b/test/zdtm/static/mntns_deleted.c
@@ -25,6 +25,7 @@ char *dirname;
TEST_OPTION(dirname, string, "directory name", 1);
#define TEST_DIR_SRC "test-src"
+#define TEST_DIR_MID "test-mid"
#define TEST_DIR_DST "test-dst"
#define TEST_FILE_SRC "mntns-deleted-src"
@@ -32,7 +33,8 @@ TEST_OPTION(dirname, string, "directory name", 1);
int main(int argc, char *argv[])
{
- char path_src[PATH_MAX], path_dst[PATH_MAX];
+ char path_mid[PATH_MAX], path_src[PATH_MAX], path_dst[PATH_MAX];
+ char path_dst_file[PATH_MAX], path_src_file[PATH_MAX];
int fd1, fd2;
test_init(argc, argv);
@@ -47,29 +49,35 @@ int main(int argc, char *argv[])
return 1;
}
- snprintf(path_src, sizeof(path_src), "%s/%s", dirname, TEST_DIR_SRC);
+ snprintf(path_mid, sizeof(path_mid), "%s/%s", dirname, TEST_DIR_MID);
+ snprintf(path_src, sizeof(path_src), "%s/%s/%s", dirname, TEST_DIR_MID, TEST_DIR_SRC);
snprintf(path_dst, sizeof(path_dst), "%s/%s", dirname, TEST_DIR_DST);
+ snprintf(path_src_file, sizeof(path_src_file), "%s/%s/%s", dirname, TEST_DIR_MID, TEST_FILE_SRC);
+ snprintf(path_dst_file, sizeof(path_dst_file), "%s/%s", dirname, TEST_FILE_DST);
rmdir(path_src);
rmdir(path_dst);
- unlink(TEST_FILE_SRC);
- unlink(TEST_FILE_DST);
+ unlink(path_src_file);
+ unlink(path_dst_file);
- if (mkdir(path_src, 0700) ||
+ rmdir(path_mid);
+
+ if (mkdir(path_mid, 0700) ||
+ mkdir(path_src, 0700) ||
mkdir(path_dst, 0700)) {
pr_perror("mkdir");
return 1;
}
- if ((fd1 = open(TEST_FILE_SRC, O_WRONLY | O_CREAT | O_TRUNC, 0600) < 0)) {
- pr_perror("touching %s", TEST_FILE_SRC);
+ if ((fd1 = open(path_src_file, O_WRONLY | O_CREAT | O_TRUNC, 0600) < 0)) {
+ pr_perror("touching %s", path_src_file);
return 1;
}
close(fd1);
- if ((fd2 = open(TEST_FILE_DST, O_WRONLY | O_CREAT | O_TRUNC, 0600) < 0)) {
- pr_perror("touching %s", TEST_FILE_DST);
+ if ((fd2 = open(path_dst_file, O_WRONLY | O_CREAT | O_TRUNC, 0600) < 0)) {
+ pr_perror("touching %s", path_dst_file);
return 1;
}
close(fd2);
@@ -79,8 +87,8 @@ int main(int argc, char *argv[])
return 1;
}
- if (mount(TEST_FILE_SRC, TEST_FILE_DST, NULL, MS_BIND | MS_MGC_VAL, NULL)) {
- pr_perror("mount %s -> %s", TEST_FILE_SRC, TEST_FILE_DST);
+ if (mount(path_src_file, path_dst_file, NULL, MS_BIND | MS_MGC_VAL, NULL)) {
+ pr_perror("mount %s -> %s", path_src_file, path_dst_file);
return 1;
}
@@ -89,8 +97,13 @@ int main(int argc, char *argv[])
return 1;
}
- if (unlink(TEST_FILE_SRC)) {
- pr_perror("unlink %s", TEST_FILE_SRC);
+ if (unlink(path_src_file)) {
+ pr_perror("unlink %s", path_src_file);
+ return 1;
+ }
+
+ if (rmdir(path_mid)) {
+ pr_perror("rmdir %s", path_mid);
return 1;
}
--
2.20.1
More information about the CRIU
mailing list