diff mbox

generic: Check linking O_TMPFILE into namespace with POSIX ACLs

Message ID 1476877814-29310-1-git-send-email-agruenba@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Andreas Gruenbacher Oct. 19, 2016, 11:50 a.m. UTC
When an O_TMPFILE file is linked into a directory with a POSIX default
ACL, the file should inherit the default ACL and the umask needs to be
ignored.

This goes together with generic/004, which tests O_TMPFILE files without
POSIX ACLs.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
---
 tests/generic/389     | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/generic/389.out |  6 +++++
 tests/generic/group   |  1 +
 3 files changed, 78 insertions(+)
 create mode 100755 tests/generic/389
 create mode 100644 tests/generic/389.out

Comments

Ross Zwisler Dec. 9, 2016, 8:35 p.m. UTC | #1
On Wed, Oct 19, 2016 at 5:50 AM, Andreas Gruenbacher
<agruenba@redhat.com> wrote:
>
> When an O_TMPFILE file is linked into a directory with a POSIX default
> ACL, the file should inherit the default ACL and the umask needs to be
> ignored.
>
> This goes together with generic/004, which tests O_TMPFILE files without
> POSIX ACLs.
>
> Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>

I can't seem to get this test to pass.  It fails for me with PMEM and
BRD devices, and with XFS, ext4 and ext2.

Here is an easily reproducible failure with xfs and two 2GiB BRD ram
disks for the TEST_DEV and SCRATCH_DEV:

# ./check generic/389
FSTYP         -- xfs (debug)
PLATFORM      -- Linux/x86_64 alara 4.9.0-rc8
MKFS_OPTIONS  -- -f -bsize=4096 /dev/ram1
MOUNT_OPTIONS -- -o context=system_u:object_r:nfs_t:s0 /dev/ram1
/mnt/xfstests_scratch

generic/389 - output mismatch (see /root/xfstests/results//generic/389.out.bad)
    --- tests/generic/389.out 2016-12-09 13:17:21.874927856 -0700
    +++ /root/xfstests/results//generic/389.out.bad 2016-12-09
13:31:22.831911244 -0700
    @@ -1,6 +1,2 @@
     QA output created by 389
    -wrote 4096/4096 bytes at offset 0
    -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
    -read 4096/4096 bytes at offset 0
    -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
    -664
    +stat: cannot stat '/mnt/xfstests_test/d.389/tst-tmpfile-flink':
No such file or directory
    ...
    (Run 'diff -u tests/generic/389.out
/root/xfstests/results//generic/389.out.bad'  to see the entire diff)
Ran: generic/389
Failures: generic/389
Failed 1 of 1 tests

This is using vanilla v4.9.0-rc8 and the following xfstests commit:

adcc60c build: allow building with latest xfslibs on 32-bit Linux

Is the test broken?
--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Eryu Guan Dec. 10, 2016, 5:39 a.m. UTC | #2
On Fri, Dec 09, 2016 at 01:35:36PM -0700, Ross Zwisler wrote:
> On Wed, Oct 19, 2016 at 5:50 AM, Andreas Gruenbacher
> <agruenba@redhat.com> wrote:
> >
> > When an O_TMPFILE file is linked into a directory with a POSIX default
> > ACL, the file should inherit the default ACL and the umask needs to be
> > ignored.
> >
> > This goes together with generic/004, which tests O_TMPFILE files without
> > POSIX ACLs.
> >
> > Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
> 
> I can't seem to get this test to pass.  It fails for me with PMEM and
> BRD devices, and with XFS, ext4 and ext2.

Probably you need the latest xfsprogs, specifically this patch

commit 41c702ce4b2bbea59e49384a90e17c64e46bd3ae
Author: Andreas Gruenbacher <agruenba@redhat.com>
Date:   Tue Nov 1 10:38:40 2016 +1100

    xfs_io: Fix initial -m option
    
    Like "open -m mode", the initial -m option requires a mode argument.
    
    Document these options correctly as well.
    
    Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
    Reviewed-by: Dave Chinner <dchinner@redhat.com>
    Signed-off-by: Dave Chinner <david@fromorbit.com>

Thanks,
Eryu
--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ross Zwisler Dec. 12, 2016, 5:42 p.m. UTC | #3
On Sat, Dec 10, 2016 at 01:39:35PM +0800, Eryu Guan wrote:
> On Fri, Dec 09, 2016 at 01:35:36PM -0700, Ross Zwisler wrote:
> > On Wed, Oct 19, 2016 at 5:50 AM, Andreas Gruenbacher
> > <agruenba@redhat.com> wrote:
> > >
> > > When an O_TMPFILE file is linked into a directory with a POSIX default
> > > ACL, the file should inherit the default ACL and the umask needs to be
> > > ignored.
> > >
> > > This goes together with generic/004, which tests O_TMPFILE files without
> > > POSIX ACLs.
> > >
> > > Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
> > 
> > I can't seem to get this test to pass.  It fails for me with PMEM and
> > BRD devices, and with XFS, ext4 and ext2.
> 
> Probably you need the latest xfsprogs, specifically this patch
> 
> commit 41c702ce4b2bbea59e49384a90e17c64e46bd3ae
> Author: Andreas Gruenbacher <agruenba@redhat.com>
> Date:   Tue Nov 1 10:38:40 2016 +1100
> 
>     xfs_io: Fix initial -m option
>     
>     Like "open -m mode", the initial -m option requires a mode argument.
>     
>     Document these options correctly as well.
>     
>     Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
>     Reviewed-by: Dave Chinner <dchinner@redhat.com>
>     Signed-off-by: Dave Chinner <david@fromorbit.com>
> 

Great, thanks.  I updated my xfsprogs and e2fsprogs and now it's passing for
all 3 filesystems.
--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/tests/generic/389 b/tests/generic/389
new file mode 100755
index 0000000..23ca6d2
--- /dev/null
+++ b/tests/generic/389
@@ -0,0 +1,71 @@ 
+#! /bin/bash
+# FS QA Test 389
+#
+# Test if O_TMPFILE files inherit POSIX Default ACLs when they are linked into
+# the namespace (also see tests/generic/004).
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2016 Red Hat, Inc.  All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it would be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write the Free Software Foundation,
+# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#-----------------------------------------------------------------------
+#
+
+seq=`basename $0`
+seqres=$RESULT_DIR/$seq
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1	# failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+	cd /
+	rm -f ${testfile}
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/attr
+. ./common/filter
+
+# real QA test starts here
+_supported_fs generic
+_supported_os Linux
+
+_require_test
+_require_xfs_io_command "flink"
+_require_acls
+
+# remove previous $seqres.full before test
+rm -f $seqres.full
+
+testfile="${TEST_DIR}/d/tst-tmpfile-flink"
+
+umask 022
+mkdir -p ${TEST_DIR}/d
+setfacl -d -m u::rwx,g::rwx,o::rx ${TEST_DIR}/d
+$XFS_IO_PROG -T -m 0666 \
+	-c "pwrite 0 4096" \
+	-c "pread 0 4096" \
+	-c "flink ${testfile}" \
+	${TEST_DIR}/d | _filter_xfs_io
+stat -c '%a' ${testfile}
+rm -rf ${TEST_DIR}/d
+
+# success, all done
+status=0
+exit
diff --git a/tests/generic/389.out b/tests/generic/389.out
new file mode 100644
index 0000000..4d11ac7
--- /dev/null
+++ b/tests/generic/389.out
@@ -0,0 +1,6 @@ 
+QA output created by 389
+wrote 4096/4096 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+read 4096/4096 bytes at offset 0
+XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
+664
diff --git a/tests/generic/group b/tests/generic/group
index fc32cfd..2656ff2 100644
--- a/tests/generic/group
+++ b/tests/generic/group
@@ -391,3 +391,4 @@ 
 386 auto quick quota
 387 auto clone
 388 auto log metadata
+389 auto quick