diff --git a/tests/zfs-tests/tests/functional/tmpfile/setup.ksh b/tests/zfs-tests/tests/functional/tmpfile/setup.ksh index 243a5b7792..bc00a2a22c 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 5fb67b47f7..91527ac5e0 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 {