[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210903045521.GD1756565@dread.disaster.area>
Date: Fri, 3 Sep 2021 14:55:21 +1000
From: Dave Chinner <david@...morbit.com>
To: Vivek Goyal <vgoyal@...hat.com>
Cc: fstests@...r.kernel.org, linux-fsdevel@...r.kernel.org,
linux-kernel@...r.kernel.org, virtio-fs@...hat.com,
dwalsh@...hat.com, dgilbert@...hat.com,
christian.brauner@...ntu.com, casey.schaufler@...el.com,
linux-security-module@...r.kernel.org, selinux@...r.kernel.org,
tytso@....edu, miklos@...redi.hu, gscrivan@...hat.com,
bfields@...hat.com, stephen.smalley.work@...il.com,
agruenba@...hat.com, viro@...iv.linux.org.uk
Subject: Re: [PATCH 3/1] xfstests: generic/062: Do not run on newer kernels
On Thu, Sep 02, 2021 at 11:47:31AM -0400, Vivek Goyal wrote:
>
> xfstests: generic/062: Do not run on newer kernels
>
> This test has been written with assumption that setting user.* xattrs will
> fail on symlink and special files. When newer kernels support setting
> user.* xattrs on symlink and special files, this test starts failing.
>
> Found it hard to change test in such a way that it works on both type of
> kernels. Primary problem is 062.out file which hardcodes the output and
> output will be different on old and new kernels.
>
> So instead, do not run this test if kernel is new and is expected to
> exhibit new behavior. Next patch will create a new test and run that
> test on new kernel.
>
> IOW, on old kernels run 062 and on new kernels run new test.
>
> This is a proposed patch. Will need to be fixed if corresponding
> kernel changes are merged upstream.
>
> Signed-off-by: Vivek Goyal <vgoyal@...hat.com>
> ---
> tests/generic/062 | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> Index: xfstests-dev/tests/generic/062
> ===================================================================
> --- xfstests-dev.orig/tests/generic/062 2021-08-31 15:51:08.160307982 -0400
> +++ xfstests-dev/tests/generic/062 2021-08-31 16:27:41.678307982 -0400
> @@ -55,6 +55,26 @@ _require_attrs
> _require_symlinks
> _require_mknod
>
> +user_xattr_allowed()
> +{
> + local kernel_version kernel_patchlevel
> +
> + kernel_version=`uname -r | awk -F. '{print $1}'`
> + kernel_patchlevel=`uname -r | awk -F. '{print $2}'`
> +
> + # Kernel version 5.14 onwards allow user xattr on symlink/special files.
> + [ $kernel_version -lt 5 ] && return 1
> + [ $kernel_patchlevel -lt 14 ] && return 1
> + return 0;
> +}
We don't do this because code changes get backported to random
kernels and so the kernel release is not a reliable indicator of
feature support.
Probing the functionality is the only way to reliably detect what a
kernel supports. That's what we don in all the _requires*()
functions, which is what this should all be wrapped in.
> +# Kernel version 5.14 onwards allow user xattr on symlink/special files.
> +# Do not run this test on newer kernels. Instead run the new test
> +# which has been written with the assumption that user.* xattr
> +# will succeed on symlink and special files.
> +user_xattr_allowed && _notrun "Kernel allows user.* xattrs on symlinks and special files. Skipping this test. Run newer test instead."
"run a newer test instead" is not a useful error message. Nor do you
need "skipping this test" - that's exactly what "notrun" means.
Cheers,
Dave.
--
Dave Chinner
david@...morbit.com
Powered by blists - more mailing lists