zfsonlinux/zfs-patches/0017-ZTS-Update-O_TMPFILE-support-check.patch
Stoiko Ivanov 04a710dd91 update/rebase to zfs-0.7.12 with patches from ZOL
Reorder patches, so that the upstream changeset comes last

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
2018-11-14 18:27:04 +01:00

68 lines
2.5 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Brian Behlendorf <behlendorf1@llnl.gov>
Date: Mon, 14 May 2018 20:36:30 -0700
Subject: [PATCH] ZTS: Update O_TMPFILE support check
In CentOS 7.5 the kernel provided a compatibility wrapper to support
O_TMPFILE. This results in the test setup script correctly detecting
kernel support. But the ZFS module was built without O_TMPFILE
support due to the non-standard CentOS kernel interface.
Handle this case by updating the setup check to fail either when
the kernel or the ZFS module fail to provide support. The reason
will be clearly logged in the test results.
Reviewed-by: Chunwei Chen <tuxoko@gmail.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #7528
---
tests/zfs-tests/tests/functional/tmpfile/setup.ksh | 11 +++++++----
tests/zfs-tests/tests/functional/tmpfile/tmpfile_test.c | 11 ++++++-----
2 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/tests/zfs-tests/tests/functional/tmpfile/setup.ksh b/tests/zfs-tests/tests/functional/tmpfile/setup.ksh
index 243a5b77..bc00a2a2 100755
--- a/tests/zfs-tests/tests/functional/tmpfile/setup.ksh
+++ b/tests/zfs-tests/tests/functional/tmpfile/setup.ksh
@@ -31,9 +31,12 @@
. $STF_SUITE/include/libtest.shlib
-if ! $STF_SUITE/tests/functional/tmpfile/tmpfile_test /tmp; then
- log_unsupported "The kernel doesn't support O_TMPFILE."
+DISK=${DISKS%% *}
+default_setup_noexit $DISK
+
+if ! $STF_SUITE/tests/functional/tmpfile/tmpfile_test $TESTDIR; then
+ default_cleanup_noexit
+ log_unsupported "The kernel/filesystem doesn't support O_TMPFILE"
fi
-DISK=${DISKS%% *}
-default_setup $DISK
+log_pass
diff --git a/tests/zfs-tests/tests/functional/tmpfile/tmpfile_test.c b/tests/zfs-tests/tests/functional/tmpfile/tmpfile_test.c
index 5fb67b47..91527ac5 100644
--- a/tests/zfs-tests/tests/functional/tmpfile/tmpfile_test.c
+++ b/tests/zfs-tests/tests/functional/tmpfile/tmpfile_test.c
@@ -36,13 +36,14 @@ main(int argc, char *argv[])
fd = open(argv[1], O_TMPFILE | O_WRONLY, 0666);
if (fd < 0) {
- /*
- * Only fail on EISDIR. If we get EOPNOTSUPP, that means
- * kernel support O_TMPFILE, but the path at argv[1] doesn't.
- */
if (errno == EISDIR) {
- fprintf(stderr, "kernel doesn't support O_TMPFILE\n");
+ fprintf(stderr,
+ "The kernel doesn't support O_TMPFILE\n");
return (1);
+ } else if (errno == EOPNOTSUPP) {
+ fprintf(stderr,
+ "The filesystem doesn't support O_TMPFILE\n");
+ return (2);
}
perror("open");
} else {