Message ID | 20230830-fixes-v4-1-88d7b8572aa3@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | fstests: add appropriate checks for fs features for some tests | expand |
On Wed, Aug 30, 2023 at 06:58:50AM -0400, Jeff Layton wrote: > _require_acl tests whether you're able to fetch the ACL from a file > using chacl, and then tests for an -EOPNOTSUPP error return. > Unfortunately, filesystems that don't support them (like NFSv4) just > return -ENODATA when someone calls getxattr for the POSIX ACL, so the > test doesn't work. > > Fix the test to have chacl set an ACL on the file instead, which should > reliably fail on filesystems that don't support them. > > Signed-off-by: Jeff Layton <jlayton@kernel.org> Seems logical, Reviewed-by: Darrick J. Wong <djwong@kernel.org> --D > --- > common/attr | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/common/attr b/common/attr > index cce4d1b201b2..3ebba682c894 100644 > --- a/common/attr > +++ b/common/attr > @@ -163,13 +163,12 @@ _require_acls() > [ -n "$CHACL_PROG" ] || _notrun "chacl command not found" > > # > - # Test if chacl is able to list ACLs on the target filesystems. On really > - # old kernels the system calls might not be implemented at all, but the > - # more common case is that the tested filesystem simply doesn't support > - # ACLs. > + # Test if chacl is able to set an ACL on a file. On really old kernels > + # the system calls might not be implemented at all, but the more common > + # case is that the tested filesystem simply doesn't support ACLs. > # > touch $TEST_DIR/syscalltest > - chacl -l $TEST_DIR/syscalltest > $TEST_DIR/syscalltest.out 2>&1 > + chacl 'u::rw-,g::---,o::---' $TEST_DIR/syscalltest > $TEST_DIR/syscalltest.out 2>&1 > cat $TEST_DIR/syscalltest.out >> $seqres.full > > if grep -q 'Function not implemented' $TEST_DIR/syscalltest.out; then > > -- > 2.41.0 >
diff --git a/common/attr b/common/attr index cce4d1b201b2..3ebba682c894 100644 --- a/common/attr +++ b/common/attr @@ -163,13 +163,12 @@ _require_acls() [ -n "$CHACL_PROG" ] || _notrun "chacl command not found" # - # Test if chacl is able to list ACLs on the target filesystems. On really - # old kernels the system calls might not be implemented at all, but the - # more common case is that the tested filesystem simply doesn't support - # ACLs. + # Test if chacl is able to set an ACL on a file. On really old kernels + # the system calls might not be implemented at all, but the more common + # case is that the tested filesystem simply doesn't support ACLs. # touch $TEST_DIR/syscalltest - chacl -l $TEST_DIR/syscalltest > $TEST_DIR/syscalltest.out 2>&1 + chacl 'u::rw-,g::---,o::---' $TEST_DIR/syscalltest > $TEST_DIR/syscalltest.out 2>&1 cat $TEST_DIR/syscalltest.out >> $seqres.full if grep -q 'Function not implemented' $TEST_DIR/syscalltest.out; then
_require_acl tests whether you're able to fetch the ACL from a file using chacl, and then tests for an -EOPNOTSUPP error return. Unfortunately, filesystems that don't support them (like NFSv4) just return -ENODATA when someone calls getxattr for the POSIX ACL, so the test doesn't work. Fix the test to have chacl set an ACL on the file instead, which should reliably fail on filesystems that don't support them. Signed-off-by: Jeff Layton <jlayton@kernel.org> --- common/attr | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)