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
This commit is contained in:
parent
38a19edd34
commit
8c64fe0442
|
@ -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
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue