common/rc: handle the case when syscall isn't available
authorLuis Henriques <lhenriques@suse.com>
Wed, 28 Jun 2017 11:20:51 +0000 (12:20 +0100)
committerEryu Guan <eguan@redhat.com>
Thu, 29 Jun 2017 05:52:12 +0000 (13:52 +0800)
_require_xfs_io_command() isn't handling the case where the
requested syscall isn't available. To fix this simply check the
error returned by xfs_io.

Usually the userspace should be synced with kernelspace, the case
that a syscall is supported by userspace tool but not kernelspace
should not happen, but in rare test setups it's possible, e.g.
building an initramfs that contains the testing tools from a recent
distro, and running the tests against an old kernel (which does not
include such syscall).

[ eguan: it's not copy_file_range syscall specific issue, update
summary and commit log, and provide more background information ]

Signed-off-by: Luis Henriques <lhenriques@suse.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
common/rc

index 2972f89e9527c0003ec1fa6dfde7c1fdf7c2c9c9..57d596cd4f2e9b1e62c3d5d6ce538c15c84dfb0c 100644 (file)
--- a/common/rc
+++ b/common/rc
@@ -2195,6 +2195,8 @@ _require_xfs_io_command()
                _notrun "xfs_io $command failed (old kernel/wrong fs/bad args?)"
        echo $testio | grep -q "foreign file active" && \
                _notrun "xfs_io $command not supported on $FSTYP"
+       echo $testio | egrep -q "Function not implemented" && \
+               _notrun "xfs_io $command support is missing (missing syscall?)"
 
        if [ -n "$param" -a $param_checked -eq 0 ]; then
                $XFS_IO_PROG -c "help $command" | grep -q "^ $param --" || \