]> git.apps.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
generic: Add a test for xattr ctime updates
authorAnna Schumaker <Anna.Schumaker@Netapp.com>
Tue, 16 May 2023 14:14:07 +0000 (10:14 -0400)
committerZorro Lang <zlang@kernel.org>
Sat, 27 May 2023 18:09:14 +0000 (02:09 +0800)
The NFS client wasn't updating ctime after a setxattr request. This is a
test written while fixing the bug.

Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
tests/generic/728 [new file with mode: 0755]
tests/generic/728.out [new file with mode: 0644]

diff --git a/tests/generic/728 b/tests/generic/728
new file mode 100755 (executable)
index 0000000..fe3486b
--- /dev/null
@@ -0,0 +1,43 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2023 Netapp Inc., All Rights Reserved.
+#
+# FS QA Test 728
+#
+# Test a bug where the NFS client wasn't sending a post-op GETATTR to the
+# server after setting an xattr, resulting in `stat` reporting a stale ctime.
+#
+. ./common/preamble
+_begin_fstest auto quick attr
+
+# Import common functions
+. ./common/attr
+
+# real QA test starts here
+_supported_fs generic
+_require_test
+_require_attrs
+
+rm -rf $TEST_DIR/testfile
+touch $TEST_DIR/testfile
+
+check_xattr_op()
+{
+       what=$1
+       shift 1
+
+       before_ctime=$(stat -c %z $TEST_DIR/testfile)
+       # maximum known ctime granularity is 2s (e.g. FAT)
+       sleep 2
+       $SETFATTR_PROG $* $TEST_DIR/testfile
+       after_ctime=$(stat -c %z $TEST_DIR/testfile)
+
+       test "$before_ctime" != "$after_ctime" || echo "Expected ctime to change after $what."
+}
+
+check_xattr_op setxattr -n user.foobar -v 123
+check_xattr_op removexattr -x user.foobar
+
+echo "Silence is golden"
+status=0
+exit
diff --git a/tests/generic/728.out b/tests/generic/728.out
new file mode 100644 (file)
index 0000000..ab39f45
--- /dev/null
@@ -0,0 +1,2 @@
+QA output created by 728
+Silence is golden