]> git.proxmox.com Git - mirror_zfs.git/commitdiff
ZTS: Update O_TMPFILE support check
authorBrian Behlendorf <behlendorf1@llnl.gov>
Tue, 15 May 2018 03:36:30 +0000 (20:36 -0700)
committerGitHub <noreply@github.com>
Tue, 15 May 2018 03:36:30 +0000 (20:36 -0700)
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
tests/zfs-tests/tests/functional/tmpfile/tmpfile_test.c

index 243a5b7792f3c2f985240b415a857e6503e2979a..bc00a2a22c5a603b1c07d2c5a4b3c437b5cb8e89 100755 (executable)
 
 . $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
index 5fb67b47f7b2ec29cad7c2a774c73b8a7f25821e..91527ac5e0e5fc3ea6a9edefa76796ea0a01ff9c 100644 (file)
@@ -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 {