From: Christian Göttsche <cgzones@xxxxxxxxxxxxxx> OverlayFS does not support a couple of ioctl's and other features, like NFS, so skip and tweak relevant tests. Signed-off-by: Christian Göttsche <cgzones@xxxxxxxxxxxxxx> --- v2: fix support for NFS, by using FS_IOC_GETFLAGS only on FIGETBZ failure --- tests/capable_sys/test | 2 +- tests/ioctl/test_ioctl.c | 16 +++++++++++++--- tests/ioctl/test_noioctl.c | 11 +++++++++-- tests/overlay/test | 7 ++++--- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/tests/capable_sys/test b/tests/capable_sys/test index 132c732..6fb57a1 100755 --- a/tests/capable_sys/test +++ b/tests/capable_sys/test @@ -10,7 +10,7 @@ BEGIN { $basedir =~ s|(.*)/[^/]*|$1|; $fs = `stat -f --print %T $basedir`; - $test_fibmap = ( $fs ne "btrfs" and $fs ne "nfs" ); + $test_fibmap = ( $fs ne "btrfs" and $fs ne "nfs" and $fs ne "overlayfs" ); $test_count = 7; if ($test_fibmap) { diff --git a/tests/ioctl/test_ioctl.c b/tests/ioctl/test_ioctl.c index 9bf732d..a68c4e0 100644 --- a/tests/ioctl/test_ioctl.c +++ b/tests/ioctl/test_ioctl.c @@ -27,11 +27,21 @@ int main(int argc, char **argv) exit(1); } - /* This one should hit the FILE__GETATTR or FILE__IOCTL test */ + /* + * This one should hit the FILE__GETATTR or FILE__IOCTL test. + * FIGETBSZ is not available on overlayfs, + * and FS_IOC_GETFLAGS is not available on NFS. + */ rc = ioctl(fd, FIGETBSZ, &val); if( rc < 0 ) { - perror("test_ioctl:FIGETBSZ"); - exit(1); + if(errno == EINVAL) { + rc = ioctl(fd, FS_IOC_GETFLAGS, &val); + } + + if( rc < 0 ) { + perror("test_ioctl:FIGETBSZ/FS_IOC_GETFLAGS"); + exit(1); + } } /* This one should hit the FILE__IOCTL test */ diff --git a/tests/ioctl/test_noioctl.c b/tests/ioctl/test_noioctl.c index ea9f120..f8cac63 100644 --- a/tests/ioctl/test_noioctl.c +++ b/tests/ioctl/test_noioctl.c @@ -43,10 +43,17 @@ int main(int argc, char **argv) exit(1); } - /* This one should hit the FILE__IOCTL or FILE__GETATTR test and fail. */ + /* + * This one should hit the FILE__GETATTR or FILE__IOCTL test. + * FIGETBSZ is not available on overlayfs, + * and FS_IOC_GETFLAGS is not available on NFS. + */ rc = ioctl(fd, FIGETBSZ, &val); + if( rc == -1 && errno == EINVAL ) { + rc = ioctl(fd, FS_IOC_GETFLAGS, &val); + } if( rc == 0 ) { - printf("test_noioctl:FIGETBSZ"); + printf("test_ioctl:FIGETBSZ/FS_IOC_GETFLAGS"); exit(1); } diff --git a/tests/overlay/test b/tests/overlay/test index c8367dd..744fc9c 100755 --- a/tests/overlay/test +++ b/tests/overlay/test @@ -9,14 +9,15 @@ BEGIN { chop($seuser); $seuser =~ s|^(\w+):.*$|$1|; - $isnfs = `stat -f --print %T $basedir`; + $fs = `stat -f --print %T $basedir`; # check if kernel supports overlayfs and SELinux labeling if ( system("grep -q security_inode_copy_up /proc/kallsyms") ) { plan skip_all => "overlayfs not supported with SELinux in this kernel"; } - elsif ( $isnfs eq "nfs" ) { - plan skip_all => "overlayfs upperdir not supported on NFS"; + elsif ( $fs eq "nfs" or $fs eq "overlayfs" ) { + plan skip_all => + "overlayfs upperdir not supported on NFS and OverlayFS"; } else { plan tests => 119; -- 2.47.1