]> git.apps.os.sepia.ceph.com Git - xfstests-dev.git/log
xfstests-dev.git
2 months agofstests: add kernel commit IDs to some tests
Filipe Manana [Thu, 29 May 2025 11:13:41 +0000 (12:13 +0100)]
fstests: add kernel commit IDs to some tests

The kernel fixes exercised by some tests have already landed in Linus'
tree, so update the tests with the respective commit IDs.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agogeneric/645: add _require_chown
Yuezhang Mo [Wed, 28 May 2025 09:15:29 +0000 (17:15 +0800)]
generic/645: add _require_chown

This test uses chown to set GID and UID, which requires chown
support, so add _require_chown to check for chown support.

Signed-off-by: Yuezhang Mo <Yuezhang.Mo@sony.com>
Reviewed-by: Friendy Su <friendy.su@sony.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agogeneric/730: add _require_scratch_shutdown
Yuezhang Mo [Wed, 28 May 2025 09:15:28 +0000 (17:15 +0800)]
generic/730: add _require_scratch_shutdown

Before testing for shutdown, check whether the file system
supports it with _require_scratch_shutdown.

Signed-off-by: Yuezhang Mo <Yuezhang.Mo@sony.com>
Reviewed-by: Friendy Su <friendy.su@sony.com>
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agogeneric/755: add _require_hardlinks
Yuezhang Mo [Wed, 28 May 2025 09:15:27 +0000 (17:15 +0800)]
generic/755: add _require_hardlinks

This test is used to test whether the ctime of the original file
changes after deleting its hard link, which requires hardlink
support, so add _require_hardlinks to check for hardlink support.

Signed-off-by: Yuezhang Mo <Yuezhang.Mo@sony.com>
Reviewed-by: Friendy Su <friendy.su@sony.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agogeneric/754: add _require_symlinks
Yuezhang Mo [Wed, 28 May 2025 09:15:26 +0000 (17:15 +0800)]
generic/754: add _require_symlinks

This test tests whether xattrs can be added to a symbolic link,
which requires symlink support, so add _require_symlinks to check
for symlink support.

Signed-off-by: Yuezhang Mo <Yuezhang.Mo@sony.com>
Reviewed-by: Friendy Su <friendy.su@sony.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agogeneric/656: add _require_chown
Yuezhang Mo [Wed, 28 May 2025 09:15:25 +0000 (17:15 +0800)]
generic/656: add _require_chown

This test uses chown to set GID and UID, which requires chown
support, so add _require_chown to check for chown support.

Signed-off-by: Yuezhang Mo <Yuezhang.Mo@sony.com>
Reviewed-by: Friendy Su <friendy.su@sony.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agogeneric/696: add _require_chmod
Yuezhang Mo [Wed, 28 May 2025 09:15:24 +0000 (17:15 +0800)]
generic/696: add _require_chmod

This test uses chmod to set the S_ISGID bit, which requires chmod
support, so add _require_chmod to check for chmod support.

Signed-off-by: Yuezhang Mo <Yuezhang.Mo@sony.com>
Reviewed-by: Friendy Su <friendy.su@sony.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agocommon/atomicwrites: fix _require_scratch_write_atomic
Darrick J. Wong [Mon, 2 Jun 2025 19:22:14 +0000 (12:22 -0700)]
common/atomicwrites: fix _require_scratch_write_atomic

Fix this function to call _notrun whenever something fails.  If we can't
figure out the atomic write geometry, then we haven't satisfied the
preconditions for the test.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agocommon/atomicwrites: adjust a few more things
Darrick J. Wong [Mon, 2 Jun 2025 19:22:13 +0000 (12:22 -0700)]
common/atomicwrites: adjust a few more things

Always export STATX_WRITE_ATOMIC so anyone can use it, make the "cp
reflink" logic work for any filesystem, not just xfs, and create a
separate helper to check that the necessary xfs_io support is present.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Reviewed-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agogeneric/765: move common atomic write code to a library file
Darrick J. Wong [Mon, 2 Jun 2025 19:22:12 +0000 (12:22 -0700)]
generic/765: move common atomic write code to a library file

Move the common atomic writes code to common/atomicwrites so we can share
them.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Reviewed-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agogeneric/765: adjust various things
Darrick J. Wong [Mon, 2 Jun 2025 19:22:11 +0000 (12:22 -0700)]
generic/765: adjust various things

Fix some bugs when detecting the atomic write geometry, record what
atomic write geometry we're testing each time through the loop, and
create a group for atomic writes tests.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Reviewed-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agogeneric/765: fix a few issues
Darrick J. Wong [Mon, 2 Jun 2025 19:22:10 +0000 (12:22 -0700)]
generic/765: fix a few issues

Fix a few bugs in the single block atomic writes test, such as not requiring
directio, using the page size for the ext4 max bsize, and making sure we check
the max atomic write size.

Cc: ritesh.list@gmail.com
Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Reviewed-by: Ojaswin Mujoo <ojaswin@linux.ibm.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agoopen_by_handle: add a test for connectable file handles v2025.05.25
Amir Goldstein [Fri, 9 May 2025 17:04:56 +0000 (19:04 +0200)]
open_by_handle: add a test for connectable file handles

This is a variant of generic/477 with connectable file handles.
This test uses load and store of file handles from a temp file to test
decoding connectable file handles after cycle mount and after renames.

Decoding connectable file handles after being moved to a new parent
is expected to fail on some filesystems, but not on filesystems that
do not really get unmounted in mount cycle like tmpfs, so skip this test.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agoopen_by_handle: add support for testing connectable file handles
Amir Goldstein [Fri, 9 May 2025 17:00:32 +0000 (19:00 +0200)]
open_by_handle: add support for testing connectable file handles

Test for kernel and filesystem support for conenctable file handles.

With -N flag, encode connectable file handles and fail the test if the
kernel or filesystem do not support conenctable file handles.

Verify that decoding connectable file handles always results in a non
empty path of the fd.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agofstests: btrfs/020: use device pool to avoid busy TEST_DEV
Qu Wenruo [Tue, 13 May 2025 23:03:01 +0000 (08:33 +0930)]
fstests: btrfs/020: use device pool to avoid busy TEST_DEV

[BUG]
There is an internal report about btrfs/020 failure, the 020.full looks
like this:

  ERROR: ioctl(DEV_REPLACE_START) failed on "/opt/test/020.5968.mnt": Read-only file system

  Performing full device TRIM /dev/loop8 (256.00MiB) ...
  _check_btrfs_filesystem: filesystem on /dev/loop0 is inconsistent
  *** fsck.btrfs output ***
  ERROR: /dev/loop0 is currently mounted, use --force if you really intend to check the filesystem
  Opening filesystem to check...
  *** end fsck.btrfs output
  *** mount output ***
  [...]
  /dev/loop0 on /opt/test type btrfs (rw,relatime,seclabel,ssd,discard=async,space_cache=v2,subvolid=5,subvol=/)
  *** end mount output

[CAUSE]
Unfortunately I can not reproduce the situation here, but it looks like
by somehow we didn't unmount the TEST_DEV before checking it.

This may or may not be caused by the fact we're using loop back devices
on TEST_MNT.

[FIX]
For this particluar test case, we really do not need to use TEST_MNT and
create complex loopback devices.

We can just ask for 3 devices from the device pool, use 2 for the raid1
fs, and then use the spare one for dev replace.

This should greately simplify the test case setup and cleanup, thus
avoid the above busy TEST_DEV and false test failure.

Furthermore use the golden output to match the error message, and since
we're here also handle a bug in btrfs-progs where the error message is
incorrectly split into two lines.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Anand Jain <anand.jain@oracle.com>
2 months agofstests: btrfs/220: do not use nologreplay when possible
Qu Wenruo [Tue, 13 May 2025 07:07:49 +0000 (16:37 +0930)]
fstests: btrfs/220: do not use nologreplay when possible

[BUG]
If the system is using mount from util-linux 2.41 or newer, the test
case will fail with the following error:

  FSTYP         -- btrfs
  PLATFORM      -- Linux/x86_64 btrfs-vm 6.15.0-rc5-custom+ #238 SMP PREEMPT_DYNAMIC Wed May  7 14:10:51 ACST 2025
  MKFS_OPTIONS  -- /dev/mapper/test-scratch1
  MOUNT_OPTIONS -- /dev/mapper/test-scratch1 /mnt/scratch

  btrfs/220 6s ... - output mismatch (see /home/adam/xfstests/results//btrfs/220.out.bad)
      --- tests/btrfs/220.out 2022-05-11 11:25:30.749999997 +0930
      +++ /home/adam/xfstests/results//btrfs/220.out.bad 2025-05-13 16:26:18.068521503 +0930
      @@ -1,2 +1,4 @@
       QA output created by 220
      +mount warning:
      +      * btrfs: Deprecated parameter 'nologreplay'
       Silence is golden
      ...
      (Run 'diff -u /home/adam/xfstests/tests/btrfs/220.out /home/adam/xfstests/results//btrfs/220.out.bad'  to see the entire diff)
  Ran: btrfs/220
  Failures: btrfs/220
  Failed 1 of 1 tests

[CAUSE]
The newer mount command provides the extra ability to show warning during
mount.

Although btrfs still supports "nologreplay" mount option to keep
consistency with other filesystems, we will output a warning and
encourage users to use "rescue=nologreplay" instead.

During "nologreplay" mount option test, normally we will mount use
the newer "rescue=nologreplay" mount option if the kernel supports.

But the following two call sites are still unconditionally utilizing
the deprecated "nologreplay" mount option directly:

- Expected failure when using nologreplay and rw mount

- Mount option verification that "nologreplay" is converted to
  "rescue=nologreplay"

The second call site caused the above mount warning message and fail the
test case.

[FIX]
If the kernel supports "rescue=nologreplay" we should not utilized
"nologreplay" at all.

This will avoid the mount warning on the deprecated and discouraged
"nologreplay" mount option.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Anand Jain <anand.jain@oracle.com>
2 months agofstests: btrfs: add git commit ID to btrfs/335
Johannes Thumshirn [Mon, 12 May 2025 06:07:49 +0000 (08:07 +0200)]
fstests: btrfs: add git commit ID to btrfs/335

Now that kernel commit 'b0c26f479926 ("btrfs: zoned: return EIO on RAID1 block
group write pointer mismatch")' is merged, add git commit ID to fstests
btrfs/335 and also add the test to the auto group.

Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agofstests: btrfs: a new test case to verify scrub and rescue=idatacsums
Qu Wenruo [Mon, 12 May 2025 09:39:10 +0000 (19:09 +0930)]
fstests: btrfs: a new test case to verify scrub and rescue=idatacsums

There is a kernel bug report that scrub will trigger a NULL pointer
dereference when rescue=idatacsums mount option is provided.

Add a test case for such situation, to verify kernel can gracefully
reject scrub when  there is no csum tree.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agobtrfs/023: add to the quick group
Filipe Manana [Thu, 15 May 2025 11:50:08 +0000 (12:50 +0100)]
btrfs/023: add to the quick group

This is a very quick test, so add it to the quick group.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agobtrfs: add tests that exercise raid profiles to the raid group
Filipe Manana [Thu, 15 May 2025 11:50:07 +0000 (12:50 +0100)]
btrfs: add tests that exercise raid profiles to the raid group

Many tests (in fact most) that exercise one or more raid profiles are not
tagged in the raid group. Tag them with the raid group so that we can
easily run only raid test with "./check -g raid" when testing changes that
affect only raid code.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agonew: Replace "status=0; exit 0" with _exit 0
Nirjhar Roy (IBM) [Thu, 22 May 2025 05:41:35 +0000 (05:41 +0000)]
new: Replace "status=0; exit 0" with _exit 0

We should now start using _exit 0 for every new test
that we add.

Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agonew: Add a new parameter (copyright-owner) in the "new" script
Nirjhar Roy (IBM) [Thu, 22 May 2025 05:41:34 +0000 (05:41 +0000)]
new: Add a new parameter (copyright-owner) in the "new" script

This patch another optional interactive prompt to enter the
copyright-owner for each new test file that is created using
the "new" file.

The sample output looks like something like the following:

./new selftest
Next test id is 007
Append a name to the ID? Test name will be 007-$name. y,[n]:
Creating test file '007'
Add to group(s) [auto] (separate by space, ? for list): selftest quick
Enter <copyright owner>: IBM Corporation
Creating skeletal script for you to edit ...
 done.

Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agof2fs/013: test to check potential corruption on atomic_write file
Chao Yu [Fri, 9 May 2025 06:07:54 +0000 (14:07 +0800)]
f2fs/013: test to check potential corruption on atomic_write file

This is a regression testcase to check whether we will handle database
inode dirty status correctly:
1. mount f2fs image w/ timeout fault injection option
2. create a regular file, and write data into the file
3. start transaction on the file (via F2FS_IOC_START_ATOMIC_WRITE)
4. write transaction data to the file
5. commit and end the transaction (via F2FS_IOC_COMMIT_ATOMIC_WRITE)
6. meanwhile loop call fsync in parallel
Before f098aeba04c9 ("f2fs: fix to avoid atomicity corruption of atomic
file"), database file may become corrupted after atomic write while
there is concurrent dirty inode flush in background.

Cc: Jaegeuk Kim <jaegeuk@kernel.org>
Cc: Daeho Jeong <daehojeong@google.com>
Signed-off-by: Chao Yu <chao@kernel.org>
Reviewed-by: David Disseldorp <ddiss@suse.de>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agocheck: check and fix the test filesystem after failed tests
Darrick J. Wong [Wed, 21 May 2025 22:42:54 +0000 (15:42 -0700)]
check: check and fix the test filesystem after failed tests

Currently, ./check calls _check_filesystems after a test passes to make
sure that the test and scratch filesystems are ok, and repairs the test
filesystem if it's not ok.

However, we don't do this for failed tests.  If a test fails /and/
corrupts the test filesystem, every subsequent passing test will be
marked as a failure because of latent corruptions on the test
filesystem.

This is a little silly, so let's call _check_filesystems on the test
filesystem after a test fail so that the badness doesn't spread.

Cc: fstests@vger.kernel.org # v2023.05.01
Fixes: 4a444bc19a836f ("check: _check_filesystems for errors even if test failed")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agocheck: unbreak iam
Darrick J. Wong [Wed, 21 May 2025 22:42:38 +0000 (15:42 -0700)]
check: unbreak iam

I don't know why this change was made:

iam=check

to

iam=check.$$

The only users of this variable are:

check:36:iam=check
check:52:rm -f $tmp.list $tmp.tmp $tmp.grep $here/$iam.out $tmp.report.* $tmp.arglist
common/btrfs:216:               if [ "$iam" != "check" ]; then
common/overlay:407:             if [ "$iam" != "check" ]; then
common/rc:3565: if [ "$iam" != "check" ]; then
common/xfs:1021:                if [ "$iam" != "check" ]; then
new:9:iam=new

None of them were ported to notice the pid.  Consequently,
_check_generic_filesystem (aka _check_test_fs on an ext4 filesystem)
failing will cause ./check to exit the entire test suite when the test
filesystem is corrupt.  That's not what we wanted, particularly since
Leah added a patch to repair the test filesystem between tests.

Cc: fstests@vger.kernel.org # v2024.12.08
Fixes: fa0e9712283f0b ("fstests: check-parallel")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agogeneric/251: skip this test if fstrim geometry detection fails
Darrick J. Wong [Wed, 21 May 2025 22:42:23 +0000 (15:42 -0700)]
generic/251: skip this test if fstrim geometry detection fails

There's no reason to wait until fstrim_loop to detect the length
constraints on the FITRIM call since failing to detect any constraints
just leads to _notrun.  Run that stuff from the top level scope so that
we don't start up a bunch of exercisers for no good reason.

Cc: fstests@vger.kernel.org # v2023.10.29
Fixes: 95b0db739400c2 ("generic/251: check min and max length and minlen for FSTRIM")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Zorro Lang <zlang@kernel.org>
2 months agogeneric/251: fix infinite looping if fstrim_loop configuration fails
Darrick J. Wong [Wed, 21 May 2025 22:42:07 +0000 (15:42 -0700)]
generic/251: fix infinite looping if fstrim_loop configuration fails

In generic/251, the topmost scope of the test creates a run file
($tmp.fstrim_loop), starts fstrim_loop as a background shell, and then
waits for the file to disappear.  Unfortunately, the set_*_constraints
helpers called by fstrim_loop can abort the subshell by invoking
_notrun, in which case the loop never deletes the runfile and the upper
scope waits forever.

Fix this by amending _destroy_fstrim to delete the runfile always, and
move the trap call to the top of the function with a note about why it
must always be called.

Oh but wait, there's a second runfile related bug in run_process -- if
the fstrim loop exits while run_process is looping, it'll keep looping
even though there isn't anything else going on.  Break out of the loopin
this case.

Oh but wait, there's a /third/ runfile bug -- if the fstrim_loop exits
before the run_process children, it will delete the runfile.  Then the
top level scope, in trying to empty out the runfile to get the
fstrim_loop to exit, recreates the runfile and waits forever for nobody
to delete the run file.

I hate process management in bash.

Cc: fstests@vger.kernel.org # v2024.12.01
Fixes: 2d6e7681acff1e ("generic/251: use sentinel files to kill the fstrim loop")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agofstests: add a mmap test group
Filipe Manana [Wed, 14 May 2025 17:13:32 +0000 (18:13 +0100)]
fstests: add a mmap test group

Add a mmap group to tag tests that exercise memory mapped reads/writes, so
that it's easy to filter and run tests that exercise map:

   ./check -g mmap

Very useful during development to quickly test changes to a filesystem's
mmap implementation.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agofstests: generic/537: remove the btrfs specific mount option
Qu Wenruo [Mon, 19 May 2025 05:28:39 +0000 (14:58 +0930)]
fstests: generic/537: remove the btrfs specific mount option

Although btrfs deprecated "norecovery" mount option in upstream kernel
commit a1912f712188 ("btrfs: remove code for inode_cache and recovery
mount options"), later "norecovery" mount option is re-introduced for
compatibility by commit 440861b1a03c ("btrfs: re-introduce 'norecovery'
mount option").

Instead the btrfs specific mount option "nologreplay" is already
deprecated for a long time and is going to be removed soon.

So use the generic "norecovery" for all filesystems.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agoxfs: skip test that want to mdrestore to block devices on zoned devices
Christoph Hellwig [Tue, 13 May 2025 05:19:33 +0000 (07:19 +0200)]
xfs: skip test that want to mdrestore to block devices on zoned devices

mdrestore doesn't work on zoned device, so skip tests using to
pre-populate a file system image.

This was previously papered over by requiring fallocate, which got
removed in commit eff1baf42a79 ("common/populate: drop fallocate mode 0
requirement").

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agotests/selftest: Add a new pseudo flaky test.
Nirjhar Roy (IBM) [Fri, 10 Jan 2025 09:10:25 +0000 (09:10 +0000)]
tests/selftest: Add a new pseudo flaky test.

This test is to simulate the behavior of a flaky test. This will be required
when we will make some modifications to the pass/fail metric calculation of
the test infrastructure where we will need a test with non-zero pass
and non-zero failure rate.

Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agof2fs/012: test red heart lookup v2025.05.11
Chao Yu [Wed, 7 May 2025 05:36:42 +0000 (13:36 +0800)]
f2fs/012: test red heart lookup

As Han Qi reported in bugzilla [1], commit 5c26d2f1d3f5 ("unicode: Don't
special case ignorable code points") changes logic to handle ignorable
code points, when we handle filename which has special unicode charactor
like red heart ❤️, utf8_casefold() may return different length than in the
past, result in that f2fs cacluates hash code incorreclty, eventually,
filename w/ special unicode charactor will not be found w/ the wrong hash
code.

f2fs has introduced a linear lookup fallback w/ commit 91b587ba79e1
("f2fs: Introduce linear search for dentries"), once hash-based lookup
fails, it tries linear lookup as a fallback.

This patch can help to check whether linear lookup fallback works well
or not.

Firstly, we use below testcase to check how hash code changes:

mkfs.f2fs -f -O casefold -C utf8 /dev/vda
mount /dev/vda /mnt/f2fs
mkdir /mnt/f2fs/dir/
f2fs_io setflags casefold /mnt/f2fs/dir
touch /mnt/f2fs/dir/$'\u2764\ufe0f'
umount /mnt/f2fs
dump.f2fs -i 4 -d 3 /dev/vda
dump.f2fs -b $blkaddr_of_dir -d 3 /dev/vda

w/o ("unicode: Don't special case ignorable code points")
[dump_dirent: 991] bitmap pos[0x2] name[❤️] len[0x6] hash[0x19dd7132] ino[0x5] type[0x1]
[dump_dirent: 998] name(hex)[0xe2 0x9d 0xa4 0xef 0xb8 0x8f 0x0]

w/ ("unicode: Don't special case ignorable code points")
[dump_dirent: 991] bitmap pos[0x2] name[❤️] len[0x6] hash[0x9a2ea068] ino[0x5] type[0x1]
[dump_dirent: 998] name(hex)[0xe2 0x9d 0xa4 0xef 0xb8 0x8f 0x0]

Correct hash code: 0x19dd7132
Wrong hash code: 0x9a2ea068

So, we can test as below:

1. create file w/ red heart as its filename
2. inject wrong hash code to the file
3. disable linear lookup, expect lookup failure
4. enable linear lookup, expect lookup succeed

[1] https://bugzilla.kernel.org/show_bug.cgi?id=219586

Cc: Jaegeuk Kim <jaegeuk@kernel.org>
Cc: Daniel Lee <chullee@google.com>
Signed-off-by: Chao Yu <chao@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agogeneric/211: completely remove obsolete test and related code
Anthony Iliopoulos [Wed, 7 May 2025 11:18:12 +0000 (13:18 +0200)]
generic/211: completely remove obsolete test and related code

This was a regression test for a bug in fs/aio.c kernel code that could
cause kernel crashing and was fixed in commit 3e45a10919b3 ("aio: remove
incorrect initialization of "nr_pages"") more than 20 years ago (in
v2.6.10).

The test code was basically trying to trigger the bug by doing repeated
mmaps until it would exhaust the vm.max_map_count limit, after which the
aio_setup_ring() would fail its own internal mmap and branch into
aio_free_ring() where it would attempt to free pages that were not
allocated and crash the kernel.

The bug is was not really relevant to filesystems in the first place,
and further to its fix it was made not possible to trigger due to commit
3dc9acb67600 ("aio: clean up and fix aio_setup_ring page mapping").

The test currently triggers the oom killer on systems where the
vm.max_map_count limit has been increased significantly from the default
as it eventually exhausts the available memory. This could be trivially
fixed by lowering and then restoring the limit just for the duration of
the test, but since it no longer serves any purpose let's drop it
completely.

Signed-off-by: Anthony Iliopoulos <ailiop@suse.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agoxfs: test that we can handle spurious zone wp advancements
Hans Holmberg [Thu, 8 May 2025 05:34:45 +0000 (07:34 +0200)]
xfs: test that we can handle spurious zone wp advancements

Test that we can gracefully handle spurious zone write pointer
advancements while unmounted.

Any space covered by the wp unexpectedly moving forward should just
be treated as unused space, so check that we can still mount the file
system and that the zone will be reset when all used blocks have been
freed.

Signed-off-by: Hans Holmberg <hans.holmberg@wdc.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agoxfs: test that truncate does not spuriously return ENOSPC
Christoph Hellwig [Thu, 8 May 2025 05:34:44 +0000 (07:34 +0200)]
xfs: test that truncate does not spuriously return ENOSPC

For zoned file systems, truncate to an offset not aligned to the block
size need to allocate a new block for zeroing the remainder.

Test that this allocation can dip into the reserved pool even when other
threads are waiting for space freed by GC.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agoxfs: test that xfs_repair does not mess up the zone used counter
Christoph Hellwig [Thu, 8 May 2025 05:34:43 +0000 (07:34 +0200)]
xfs: test that xfs_repair does not mess up the zone used counter

Check that xfs_repair actually rebuilds the used counter after blowing
away the rmap inode and recreating it.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agoxfs: test zoned GC file defragmentation for random writers
Christoph Hellwig [Thu, 8 May 2025 05:34:42 +0000 (07:34 +0200)]
xfs: test zoned GC file defragmentation for random writers

Test that zoned GC defragments sequential writers forced into the same
zone.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agoxfs: test zoned GC file defragmentation for sequential writers
Christoph Hellwig [Thu, 8 May 2025 05:34:41 +0000 (07:34 +0200)]
xfs: test zoned GC file defragmentation for sequential writers

Test that zoned GC defragments sequential writers forced into the same
zone.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agoxfs: test zoned ENOSPC behavior with multiple writers
Christoph Hellwig [Thu, 8 May 2025 05:34:40 +0000 (07:34 +0200)]
xfs: test zoned ENOSPC behavior with multiple writers

Test that multiple parallel writers can't accidentally dip into the reserved
space pool.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agoxfs: test zone stream separation for two buffered writers
Christoph Hellwig [Thu, 8 May 2025 05:34:39 +0000 (07:34 +0200)]
xfs: test zone stream separation for two buffered writers

Check that two parallel buffered sequential writers are separated into
different zones when writeback happens before closing the files.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agoxfs: test zone stream separation for two direct writers
Christoph Hellwig [Thu, 8 May 2025 05:34:38 +0000 (07:34 +0200)]
xfs: test zone stream separation for two direct writers

Check that two parallel direct sequential writers are separated into
different zones.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agoxfs: add a test for writeback after close
Christoph Hellwig [Thu, 8 May 2025 05:34:37 +0000 (07:34 +0200)]
xfs: add a test for writeback after close

Test that files written back after closing are packed tightly instead of
using up open zone resources.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agoxfs: add a test for write lifetime hints
Christoph Hellwig [Thu, 8 May 2025 05:34:36 +0000 (07:34 +0200)]
xfs: add a test for write lifetime hints

Test that the zone allocator actually places by temperature bucket.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agoxfs: add a test to check that data growfs fails with internal rt device
Christoph Hellwig [Thu, 8 May 2025 05:34:35 +0000 (07:34 +0200)]
xfs: add a test to check that data growfs fails with internal rt device

The internal RT device directly follows the data device on the same
block device.  This implies the data device can't be grown, and growfs
should handle this gracefully.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agoxfs: add test to check for block layer reordering
Christoph Hellwig [Thu, 8 May 2025 05:34:34 +0000 (07:34 +0200)]
xfs: add test to check for block layer reordering

Zoned writes using zone append can be easily fragmented when the block
layer or the driver reorders I/O.  Check that a simple sequential
direct write creates a single extent.  This was broken in the kernel
until recently when using the ->commit_rqs interface on devices with
a relatively small max_hw_sectors / max_zone_append_sectors.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agoxfs: add a zoned growfs test
Christoph Hellwig [Thu, 8 May 2025 05:34:33 +0000 (07:34 +0200)]
xfs: add a zoned growfs test

Zoned file systems require zone aligned RT volume sizes.  Because of
that xfs/596 won't work as-is.  Copy it and test two zone capacity
aligned values.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agoxfs: add a test for zoned block accounting after remount
Christoph Hellwig [Thu, 8 May 2025 05:34:32 +0000 (07:34 +0200)]
xfs: add a test for zoned block accounting after remount

Test for a problem with an earlier version of the zoned XFS mount code
where freeded blocks in an open zone weren't properly accounted for.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agofstests: add a new rw_hint helper
Christoph Hellwig [Thu, 8 May 2025 05:34:31 +0000 (07:34 +0200)]
fstests: add a new rw_hint helper

Add a tool to set the life time hint via fcntl.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agocommon: generalize _filter_agno
Christoph Hellwig [Thu, 8 May 2025 05:34:30 +0000 (07:34 +0200)]
common: generalize _filter_agno

Rename and move to common/xfs so that it can be reused for rgnos in new
zoned tests.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agoxfs/349: don't run on kernels that don't support scrub
Darrick J. Wong [Wed, 7 May 2025 21:54:23 +0000 (14:54 -0700)]
xfs/349: don't run on kernels that don't support scrub

Don't run this scrub test if the kernel doesn't support scrub.

Fixes: f5f0c11a67a8f5 ("xfs: fuzz every field of every structure")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agofsstress: fix attr_set naming
Darrick J. Wong [Wed, 7 May 2025 21:54:07 +0000 (14:54 -0700)]
fsstress: fix attr_set naming

Back in 2020 I converted attr_set to lsetxattr, but neglected to notice
that the attr name now has to have the prefix "user." which attr_set
used to append for us.  Unfortunately nobody runs fsstress in verbose
mode so I didn't notice until now, and even then only because fuse2fs
stupidly accepts any name, even if that corrupts the filesystem.

Found by running generic/642 on fuse2fs.

Cc: fstests@vger.kernel.org # v2022.05.01
Fixes: 808f39a416c962 ("fsstress: stop using attr_set")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agocommon: support internal RT devices in scratch_mkfs_sized
Christoph Hellwig [Thu, 1 May 2025 13:38:58 +0000 (08:38 -0500)]
common: support internal RT devices in scratch_mkfs_sized

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agocommon: support internal RT device in _require_realtime
Christoph Hellwig [Thu, 1 May 2025 13:38:57 +0000 (08:38 -0500)]
common: support internal RT device in _require_realtime

If SCRATCH_DEV is a zoned device it implies an internal zoned RT device
and should not be skipped in _require_realtime.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agocommon: notrun in mkfs_dev for too small zoned file systems
Christoph Hellwig [Thu, 1 May 2025 13:38:56 +0000 (08:38 -0500)]
common: notrun in mkfs_dev for too small zoned file systems

Similar to the regular scratch_mkfs, skip the test if the file system
would be so small that there's not enough zones.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agoxfs: check for zoned-specific errors in _try_scratch_mkfs_xfs
Christoph Hellwig [Thu, 1 May 2025 13:38:55 +0000 (08:38 -0500)]
xfs: check for zoned-specific errors in _try_scratch_mkfs_xfs

Check for a few errors issued for unsupported zoned configurations in
_try_scratch_mkfs_xfs so that the test is not run instead of failed.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agofstests/MAINTAINERS: update ocfs2 mailing list address
Anthony Iliopoulos [Wed, 30 Apr 2025 12:23:42 +0000 (14:23 +0200)]
fstests/MAINTAINERS: update ocfs2 mailing list address

Bring the ocfs2 mailing list address up to date, following the upstream
change in kernel commit a57b4b7f0557 ("MAINTAINERS: update ocfs2-devel
mailing list address").

Signed-off-by: Anthony Iliopoulos <ailiop@suse.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agocheck: Replace exit with _fatal and _exit in check
Nirjhar Roy (IBM) [Wed, 30 Apr 2025 12:45:23 +0000 (12:45 +0000)]
check: Replace exit with _fatal and _exit in check

Some of the "status=<val>;exit" and "exit <val>" were not
replaced with _exit <val> and _fatal. Doing it now.

Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agocommon: Move exit related functions to a common/exit
Nirjhar Roy (IBM) [Wed, 30 Apr 2025 12:45:22 +0000 (12:45 +0000)]
common: Move exit related functions to a common/exit

Introduce a new file common/exit that will contain all the exit
related functions. This will remove the dependencies these functions
have on other non-related helper files and they can be indepedently
sourced. This was suggested by Dave Chinner[1].
While moving the exit related functions, remove _die() and die_now()
and replace die_now with _fatal(). It is of no use to keep the
unnecessary wrappers.

[1] https://lore.kernel.org/linux-xfs/Z_UJ7XcpmtkPRhTr@dread.disaster.area/

Suggested-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agofstests: common/btrfs: add _ prefix to temp fsid helper functions v2025.04.27
Anand Jain [Thu, 17 Apr 2025 12:27:22 +0000 (20:27 +0800)]
fstests: common/btrfs: add _ prefix to temp fsid helper functions

Just adding a _ prefix to the two temp fsid helper functions and
a rename in common/btrfs to keep the coding style consistent.

Reviewed-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Anand Jain <anand.jain@oracle.com>
3 months agofstests: btrfs/315: fix golden output mismatch caused by newer util-linux
Qu Wenruo [Thu, 24 Apr 2025 07:29:07 +0000 (16:59 +0930)]
fstests: btrfs/315: fix golden output mismatch caused by newer util-linux

[BUG]
With util-linux v2.41.0 and newer, test case btrfs/315 will fail like
the following:

btrfs/315 1s ... - output mismatch (see /home/adam/xfstests-dev/results//btrfs/315.out.bad)
    --- tests/btrfs/315.out 2025-04-24 15:31:28.684112371 +0930
    +++ /home/adam/xfstests-dev/results//btrfs/315.out.bad 2025-04-24 15:31:31.854883557 +0930
    @@ -1,7 +1,7 @@
     QA output created by 315
     ---- seed_device_must_fail ----
     mount: SCRATCH_MNT: WARNING: source write-protected, mounted read-only.
    -mount: TEST_DIR/315/tempfsid_mnt:  system call failed: File exists.
    +mount: TEST_DIR/315/tempfsid_mnt: () failed: File exists.
     ---- device_add_must_fail ----
     wrote 9000/9000 bytes at offset 0

[CAUSE]

With util-linux v2.41.0, the mount failure error message changed to the following:

  mount: /mnt/test/315/tempfsid_mnt: fsconfig() failed: File exists.

Thus the existing filter only striped the "fsconfig" part, leaving the
"()" without changing it to " system call".

[FIX]
The test case is doomed in day one by using a local filter, which
requires stupid catch-up game against util-linux.

Meanwhile we already have a much better filter, _filter_error_mount().
That helper can already handle the newer v2.41 output.

Let's use the superior common filter and update the golden output to:

  mount: File exists.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Anand Jain <anand.jain@oracle.com>
[ fixed: filter.btrfs is not needed ]

3 months agofstests: btrfs/253: fix false alert due to _set_fs_sysfs_attr changes
Qu Wenruo [Mon, 21 Apr 2025 07:59:40 +0000 (17:29 +0930)]
fstests: btrfs/253: fix false alert due to _set_fs_sysfs_attr changes

[FALSE FAILURE]
Test btrfs/253 now fails like the following:

btrfs/253 2s ... - output mismatch (see ~/xfstests/results//btrfs/253.out.bad)
    --- tests/btrfs/253.out 2022-05-11 11:25:30.753333331 +0930
    +++ ~/xfstests/results//btrfs/253.out.bad 2025-04-20 17:28:39.139180394 +0930
    @@ -5,6 +5,7 @@
     Calculate request size so last memory allocation cannot be completely fullfilled.
     Third allocation.
     Force allocation of system block type must fail.
    +./common/rc: line 5213: echo: write error: No space left on device
     Verify first allocation.
     Verify second allocation.
     Verify third allocation.
    ...
    (Run 'diff -u ~/xfstests/tests/btrfs/253.out ~/xfstests/results//btrfs/253.out.bad'  to see the entire diff)

[CAUSE]
Since commit 0a9011ae6a36 ("fstests: common/rc: set_fs_sysfs_attr:
redirect errors to stdout") the function _set_fs_sysfs_attr() always
output everything into stdout, thus the stderr redirection makes no
sense anymore.

And the expected failure will cause output difference and fail the test.

[FIX]
Use the helper _set_sysfs_policy_must_fail() instead, which will handle
the failure.
And update the golden output to include the expected ENOSPC error
message.

Fixes: 0a9011ae6a36 ("fstests: common/rc: set_fs_sysfs_attr: redirect errors to stdout")
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Anand Jain <anand.jain@oracle.com>
3 months agofstests: btrfs/271: specify "-m raid1" to avoid false alerts
Qu Wenruo [Thu, 17 Apr 2025 10:26:23 +0000 (19:56 +0930)]
fstests: btrfs/271: specify "-m raid1" to avoid false alerts

[FALSE FAILURE]
Test case btrfs/271 will fail like the following, if the MKFS_OPTIONS
has specified a metadata profile (either SINGLE or DUP):

  btrfs/271 1s ... - output mismatch (see /home/adam/xfstests/results//btrfs/271.out.bad)
      --- tests/btrfs/271.out 2022-11-07 09:59:11.256666666 +1030
      +++ /home/adam/xfstests/results//btrfs/271.out.bad 2025-04-17 19:49:00.129443427 +0930
      @@ -1,523 +1,9 @@
       QA output created by 271
       Allow global fail_make_request feature
       Step 1: writing with one failing mirror:
      -wrote 8192/8192 bytes at offset 0
      -XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
      +fsync: Input/output error
       Step 2: verify that the data reads back fine:
      ...
      (Run 'diff -u /home/adam/xfstests/tests/btrfs/271.out /home/adam/xfstests/results//btrfs/271.out.bad'  to see the entire diff)
  Ran: btrfs/271
  Failures: btrfs/271
  Failed 1 of 1 tests

[CAUSE]
The test case relies on mkfs.btrfs to use RAID1 as default metadata
profile if multiple devices are provided.

This is no longer true if the run has specified certain profile in
MKFS_OPTIONS.

If "-m dup" or "-m single" is specified, the fs will flip read-only as
either profile can handle any missing or failed device super block
writeback.

[FIX]
Just specify both metadata (RAID1) and data (RAID1, already in the test
case) to avoid the false failure.

Reported-by: kdevops <kdevops@lists.linux.dev>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Anand Jain <anand.jain@oracle.com>
3 months agof2fs/011: test to check out-of-space issue
Chao Yu [Thu, 27 Mar 2025 05:50:51 +0000 (13:50 +0800)]
f2fs/011: test to check out-of-space issue

This is a regression testcase to check whether we will handle
out-of-space case correctly during fallocate() on pinned file
once we disable checkpoint.

Testcase:
1. mount f2fs w/ checkpoint=disable option
2. create fragmented file data
3. set flag w/ pinned flag
4. fallocate space for pinned file, expects panic due to running
out of space.

We should apply both commit ("f2fs: fix to avoid panic once
fallocation fails for pinfile") and commit ("f2fs: fix to avoid
running out of free segments") to avoid system panic.
Note that w/ these two commit, we fixed such issue in both
convential and zoned block device.

Cc: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Chao Yu <chao@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agogeneric/233: use relative path to invoke fsstress
Christoph Hellwig [Wed, 16 Apr 2025 04:51:12 +0000 (06:51 +0200)]
generic/233: use relative path to invoke fsstress

This test uses su to run fsstress as $qa_user.  Because the shell calling
fsstress is run as $qa_user it might not be able to access the xfstests
or parent directory which might only be accessible to the user xfstests
is run as (e.g. root).  Switch back to calling fsstress using a relative
path, partially reverting the effects of commit c475ff6ff6d7
("common/config: add $here to FSSTRESS_PROG").

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agogeneric/231: use relative path to invoke fsx
Christoph Hellwig [Wed, 16 Apr 2025 04:51:11 +0000 (06:51 +0200)]
generic/231: use relative path to invoke fsx

This test uses su to run fsx as $qa_user.  Because the shell calling
fsx is run as $qa_user it might not be able to access the xfstests or
parent directory which might only be accessible to the user xfstests
is run as (e.g. root).  Switch back to calling fsx using a relative
path, partially reverting commit 1c67e8b191fe
("config: add FSX_PROG variable").

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
3 months agogeneric/033: Don't call 'fzero' with the KEEP_SIZE flag
Anna Schumaker [Fri, 25 Apr 2025 15:24:52 +0000 (11:24 -0400)]
generic/033: Don't call 'fzero' with the KEEP_SIZE flag

None of the fzero calls in this test end up writing past the end of the
file, so this flag is unnecessary and can cause the test to fail on
filesystems that don't implement FALLOC_FL_KEEP_SIZE.

Signed-off-by: Anna Schumaker <anna.schumaker@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>
3 months agoREADME: add supported fs list
Zorro Lang [Fri, 28 Mar 2025 16:46:09 +0000 (00:46 +0800)]
README: add supported fs list

To clarify the supported filesystems by fstests, add a fs list to
README file.

Acked-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agofstests: btrfs: testcase for sysfs chunk_size attribute validation v2025.04.13
Anand Jain [Wed, 5 Feb 2025 10:04:37 +0000 (18:04 +0800)]
fstests: btrfs: testcase for sysfs chunk_size attribute validation

Checks if the sysfs attribute sanitizes arguments and verifies
input syntax allocation/data/chunk_size.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agofstests: btrfs: testcase for sysfs policy syntax verification
Anand Jain [Wed, 29 Jan 2025 07:56:56 +0000 (15:56 +0800)]
fstests: btrfs: testcase for sysfs policy syntax verification

Checks if the sysfs attribute sanitizes arguments and verifies
input syntax.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agofstests: common/sysfs: add new file sysfs and helpers
Anand Jain [Fri, 31 Jan 2025 07:14:43 +0000 (15:14 +0800)]
fstests: common/sysfs: add new file sysfs and helpers

Introduce `verify_sysfs_syntax()` and `_require_fs_sysfs_attr_policy()`
to verify whether a sysfs attribute rejects invalid input arguments
during writes.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agofstests: filter: helper for sysfs error filtering
Anand Jain [Wed, 29 Jan 2025 07:56:29 +0000 (15:56 +0800)]
fstests: filter: helper for sysfs error filtering

Added filter helper to filter sysfs write errors, retain only the
error part.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agofstests: common/rc: set_fs_sysfs_attr: redirect errors to stdout
Anand Jain [Wed, 29 Jan 2025 07:54:50 +0000 (15:54 +0800)]
fstests: common/rc: set_fs_sysfs_attr: redirect errors to stdout

Redirect sysfs write errors to stdout as a preparatory patch to enable
testing of expected sysfs write failures. Also, log the executed
sysfs write command and its failure if any to seqres.full for better
debugging and traceability.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agocommon: exit --> _exit
Nirjhar Roy (IBM) [Wed, 9 Apr 2025 07:00:52 +0000 (07:00 +0000)]
common: exit --> _exit

Replace exit <return-val> with _exit <return-val> which
is introduced in the previous patch.

Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agocommon/config: Introduce _exit wrapper around exit command
Nirjhar Roy (IBM) [Wed, 9 Apr 2025 07:00:51 +0000 (07:00 +0000)]
common/config: Introduce _exit wrapper around exit command

We should always set the value of status correctly when we are exiting.
Else, "$?" might not give us the correct value.
If we see the following trap
handler registration in the check script:

if $OPTIONS_HAVE_SECTIONS; then
     trap "_kill_seq; _summary; exit \$status" 0 1 2 3 15
else
     trap "_kill_seq; _wrapup; exit \$status" 0 1 2 3 15
fi

So, "exit 1" will exit the check script without setting the correct
return value. I ran with the following local.config file:

[xfs_4k_valid]
FSTYP=xfs
TEST_DEV=/dev/loop0
TEST_DIR=/mnt1/test
SCRATCH_DEV=/dev/loop1
SCRATCH_MNT=/mnt1/scratch

[xfs_4k_invalid]
FSTYP=xfs
TEST_DEV=/dev/loop0
TEST_DIR=/mnt1/invalid_dir
SCRATCH_DEV=/dev/loop1
SCRATCH_MNT=/mnt1/scratch

This caused the init_rc() to catch the case of invalid _test_mount
options. Although the check script correctly failed during the execution
of the "xfs_4k_invalid" section, the return value was 0, i.e "echo $?"
returned 0. This is because init_rc exits with "exit 1" without
correctly setting the value of "status". IMO, the correct behavior
should have been that "$?" should have been non-zero.

The next patch will replace exit with _exit.

Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agocheck,common{rc,preamble}: Decouple init_rc() call from sourcing common/rc
Nirjhar Roy (IBM) [Wed, 9 Apr 2025 07:00:50 +0000 (07:00 +0000)]
check,common{rc,preamble}: Decouple init_rc() call from sourcing common/rc

Silently executing scripts during sourcing common/rc isn't good practice
and also causes unnecessary script execution. Decouple init_rc() call
and call init_rc() explicitly where required.

Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agocheck: Remove redundant _test_mount in check
Nirjhar Roy (IBM) [Wed, 9 Apr 2025 07:00:49 +0000 (07:00 +0000)]
check: Remove redundant _test_mount in check

init_rc already does a _test_mount. Hence removing the additional
_test_mount call when OLD_TEST_FS_MOUNT_OPTS != TEST_FS_MOUNT_OPTS.

Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agogeneric/367: Remove redundant sourcing of common/config
Nirjhar Roy (IBM) [Wed, 9 Apr 2025 07:00:48 +0000 (07:00 +0000)]
generic/367: Remove redundant sourcing of common/config

common/config will be source by _begin_fstest

Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agogeneric/749: Remove redundant sourcing of common/rc
Nirjhar Roy (IBM) [Wed, 9 Apr 2025 07:00:47 +0000 (07:00 +0000)]
generic/749: Remove redundant sourcing of common/rc

common/rc is already sourced before the test starts running
in _begin_fstest() preamble.

Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agogeneric: add a test for atomic writes
Catherine Hoang [Thu, 10 Apr 2025 04:23:17 +0000 (21:23 -0700)]
generic: add a test for atomic writes

Add a test to validate the new atomic writes feature.

Signed-off-by: Catherine Hoang <catherine.hoang@oracle.com>
Reviewed-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agogeneric/275: fix on 32k fsblock filesystems
Darrick J. Wong [Wed, 9 Apr 2025 15:16:12 +0000 (08:16 -0700)]
generic/275: fix on 32k fsblock filesystems

This test fails on 32k-fsblock filesystems:

dd: failed to open '/opt/tmp3': No space left on device
dd: failed to open '/opt/tmp4': No space left on device
Pre rm space:
Filesystem     Type 1024-blocks    Used Available Capacity Mounted on
/dev/sda4      xfs      2031616 2030624       992     100% /opt
Post rm space:
Filesystem     Type 1024-blocks    Used Available Capacity Mounted on
/dev/sda4      xfs      2031616 2030368      1248     100% /opt
could not sufficiently fill filesystem

On a 32k-fsblock filesystem, creating tmp3 and tmp4 requires more than
1MB for the transaction allocation, which is why this test fails to fill
the filesystem.  To fix this, touch the four tmp files before trying to
use up all the free space.  The fix in ef25a29fa49a50 was incomplete.

Cc: fstests@vger.kernel.org # v2022.07.24
Fixes: ef25a29fa49a50 ("generic/275: fix premature enospc errors when fs block size is large")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agoxfs/792: skip test if rextsize isn't congruent with operation length
Darrick J. Wong [Wed, 9 Apr 2025 15:15:34 +0000 (08:15 -0700)]
xfs/792: skip test if rextsize isn't congruent with operation length

This test writes 64k chunks and encodes the file content hash in the
golden output.  Don't run it if the file allocation unit isn't congruent
with 64k.  Fixes extsize=28k configurations.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agoxfs/801: provide missing sysfs-dump function
Darrick J. Wong [Tue, 8 Apr 2025 18:17:32 +0000 (11:17 -0700)]
xfs/801: provide missing sysfs-dump function

This test uses sysfs-dump to capture THP diagnostic information to
$seqres.full.  Unfortunately, that's not a standard program (it's one of
my many tools) and I forgot to paste the script into the test.  Hence
it's been broken since merge for everyone else.  Fix it.

Cc: fstests@vger.kernel.org # v2024.08.11
Fixes: 518896a7b483c0 ("xfs: test online repair when xfiles consists of THPs")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agocommon/rc: fix dumping of corrupt ext* filesystems
Darrick J. Wong [Mon, 7 Apr 2025 23:59:31 +0000 (16:59 -0700)]
common/rc: fix dumping of corrupt ext* filesystems

The parameters to _ext4_metadump are device, dumpfile, and compress
options.  This callsite got the arguments in the wrong order, which
causes fstests to compress all of /dev/sdX as /dev/sdX.zst which is not
what we want.

Cc: fstests@vger.kernel.org # v2022.05.01
Fixes: 9fb30a9500c169 ("common: capture qcow2 dumps of corrupt ext* filesystems")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agoxfs: remove the post-EOF prealloc tests from the auto and quick groups
Christoph Hellwig [Tue, 8 Apr 2025 06:51:55 +0000 (08:51 +0200)]
xfs: remove the post-EOF prealloc tests from the auto and quick groups

These fail for various non-default configs like DAX, alwayscow and
small block sizes.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agogeneric/750 : add missing _fixed_by_git_commit line to the test
Swarna Prabhu [Tue, 1 Apr 2025 02:29:21 +0000 (02:29 +0000)]
generic/750 : add missing _fixed_by_git_commit line to the test

Testing generic/750 with older kernels indicated that more work has to
be done, since we were able to reproduce a hang with v6.10-rc7 with 2.5
hours soak duration. We tried to reproduce the same issue on v6.12 and could
no longer reproduce the original hang. This motivated us to identify the commit
2e6506e1c4ee ("mm/migrate: fix deadlock in migrate_pages_batch() on large folios")
that fixes the originally reported deadlock hang annotated as pending work
to evaluate on generic/750. Hence if you are using kernel older than v6.11-rc4
this commit is needed.

Below is the kernel trace collected on v6.10-rc7 without the above
commit and CONFGI_PROVE_LOCKING enabled:

[ 8942.920967]  ret_from_fork_asm+0x1a/0x30
[ 8942.921450]  </TASK>
[ 8942.921711] INFO: task 750:2532 blocked for more than 241 seconds.                                                                                         [ 8942.922413]       Not tainted 6.10.0-rc7 #9
[ 8942.922894] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.                                                                      [ 8942.923770] task:750             state:D stack:0     pid:2532  tgid:2532  ppid:2349   flags:0x00004002                                                     [ 8942.924820] Call Trace:
[ 8942.925109]  <TASK>
[ 8942.925362]  __schedule+0x465/0xe10
[ 8942.925756]  schedule+0x39/0x140
[ 8942.926114]  io_schedule+0x42/0x70
[ 8942.926493]  folio_wait_bit_common+0x10e/0x330
[ 8942.926986]  ? __pfx_wake_page_function+0x10/0x10
[ 8942.927506]  migrate_pages_batch+0x765/0xeb0
[ 8942.927986]  ? __pfx_compaction_alloc+0x10/0x10
[ 8942.928488]  ? __pfx_compaction_free+0x10/0x10
[ 8942.928983]  migrate_pages+0xbfd/0xf50
[ 8942.929377]  ? __pfx_compaction_alloc+0x10/0x10
[ 8942.929838]  ? __pfx_compaction_free+0x10/0x10
[ 8942.930553]  compact_zone+0xa4d/0x11d0
[ 8942.930936]  ? rcu_is_watching+0xd/0x40
[ 8942.931332]  compact_node+0xa9/0x120
[ 8942.931704]  sysctl_compaction_handler+0x71/0xd0
[ 8942.932177]  proc_sys_call_handler+0x1b8/0x2d0
[ 8942.932641]  vfs_write+0x281/0x530
[ 8942.932993]  ksys_write+0x67/0xf0
[ 8942.933381]  do_syscall_64+0x69/0x140
[ 8942.933822]  entry_SYSCALL_64_after_hwframe+0x76/0x7e
[ 8942.934415] RIP: 0033:0x7f8a460215c7
[ 8942.934843] RSP: 002b:00007fff75cf7bb0 EFLAGS: 00000202 ORIG_RAX: 0000000000000001
[ 8942.935720] RAX: ffffffffffffffda RBX: 00007f8a45f8f740 RCX: 00007f8a460215c7
[ 8942.936550] RDX: 0000000000000002 RSI: 000055e89e3a7790 RDI: 0000000000000001
[ 8942.937405] RBP: 000055e89e3a7790 R08: 0000000000000000 R09: 0000000000000000                                                                              [ 8942.938236] R10: 0000000000000000 R11: 0000000000000202 R12: 0000000000000002
[ 8942.939068] R13: 00007f8a4617a5c0 R14: 00007f8a46177e80 R15: 0000000000000000
[ 8942.939902]  </TASK>
[ 8942.940169] Future hung task reports are suppressed, see sysctl kernel.hung_task_warnings
[ 8942.941150] INFO: lockdep is turned off.

With the commit cherry picked to v6.10-rc7 , the test passes
successfully without any hang/deadlock, however
with CONFIG_PROVE_LOCKING enabled we do see the below trace for the
passing case:

 BUG: MAX_LOCKDEP_CHAIN_HLOCKS too low!
 turning off the locking correctness validator.
 CPU: 1 PID: 2959 Comm: kworker/u34:5 Not tainted 6.10.0-rc7+ #12
 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 2024.11-5 01/28/2025
 Workqueue: btrfs-endio-write btrfs_work_helper [btrfs]
 Call Trace:
  <TASK>
  dump_stack_lvl+0x68/0x90
  __lock_acquire.cold+0x186/0x1b1
  lock_acquire+0xd6/0x2e0
  ? btrfs_get_alloc_profile+0x27/0x90 [btrfs]
  seqcount_lockdep_reader_access+0x70/0x90 [btrfs]
  ? btrfs_get_alloc_profile+0x27/0x90 [btrfs]
  btrfs_get_alloc_profile+0x27/0x90 [btrfs]
  btrfs_reserve_extent+0xa9/0x290 [btrfs]
  btrfs_alloc_tree_block+0xa5/0x520 [btrfs]
  ? lockdep_unlock+0x5e/0xd0
  ? __lock_acquire+0xc6f/0x1fa0
  btrfs_force_cow_block+0x111/0x5f0 [btrfs]
  btrfs_cow_block+0xcc/0x2d0 [btrfs]
  btrfs_search_slot+0x502/0xd00 [btrfs]
  ? stack_depot_save_flags+0x24/0x8a0
  btrfs_lookup_file_extent+0x48/0x70 [btrfs]
  btrfs_drop_extents+0x108/0xce0 [btrfs]
  ? _raw_spin_unlock_irqrestore+0x35/0x60
  ? __create_object+0x5e/0x90
  ? rcu_is_watching+0xd/0x40
  ? kmem_cache_alloc_noprof+0x280/0x320
  insert_reserved_file_extent+0xea/0x3a0 [btrfs]
  ? btrfs_init_block_rsv+0x51/0x60 [btrfs]
  btrfs_finish_one_ordered+0x3ea/0x840 [btrfs]
  btrfs_work_helper+0x103/0x4b0 [btrfs]
  ? lock_release+0x177/0x2e0
  process_one_work+0x21a/0x590
  ? lock_is_held_type+0xd5/0x130
  worker_thread+0x1bf/0x3c0
  ? __pfx_worker_thread+0x10/0x10
  kthread+0xdd/0x110
  ? __pfx_kthread+0x10/0x10
  ret_from_fork+0x2d/0x50
  ? __pfx_kthread+0x10/0x10
  ret_from_fork_asm+0x1a/0x30
  </TASK>
 Started fstests-check.scope - [systemd-run] /usr/bin/bash -c "exit 77".
 fstests-check.scope: Deactivated successfully.

Signed-off-by: Swarna Prabhu <s.prabhu@samsung.com>
Reviewed-by: Luis Chamberlain <mcgrof@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agoxfs/539: Ignore remount failures on v5 xfs
Nirjhar Roy (IBM) [Tue, 4 Mar 2025 13:48:16 +0000 (13:48 +0000)]
xfs/539: Ignore remount failures on v5 xfs

Remount with noattr2 fails on a v5 filesystem, however the deprecation
warnings still get printed and that is exactly what the test
is checking. So ignore the mount failures in this case.

Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
Reviewed-by: Pavel Reichl <preichl@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agoxfs/235: add to the auto group v2025.03.30
Christoph Hellwig [Mon, 17 Mar 2025 05:51:38 +0000 (06:51 +0100)]
xfs/235: add to the auto group

xfs/235 is the only test effectively exercising the temporary enabling
of SB_ACTIVE during log recovery.  Add it to the auto group to increase
coverage.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agofstests: test for CONFIG_QFMT_V2 in _require_quota
Eric Sandeen [Fri, 14 Mar 2025 15:44:16 +0000 (10:44 -0500)]
fstests: test for CONFIG_QFMT_V2 in _require_quota

When CONFIG_QUOTA is enabled but CONFIG_QFMT_V2 is disabled in the
kernel config, many quota tests on ext4 will fail in odd ways,
when in fact they should be _notrun. Add a CONFIG_QFMT_V2 test to
_require_quota() to catch this for filesystems that require it.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Bill O'Donnell <bodonnel@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agofstests: btrfs: zoned: verify RAID conversion with write pointer mismatch
Johannes Thumshirn [Wed, 19 Mar 2025 11:09:47 +0000 (12:09 +0100)]
fstests: btrfs: zoned: verify RAID conversion with write pointer mismatch

Recently we had a bug report about a kernel crash that happened when the
user was converting a filesystem to use RAID1 for metadata, but for some
reason the device's write pointers got out of sync.

Test this scenario by manually injecting de-synchronized write pointer
positions and then running conversion to a metadata RAID1 filesystem.

In the testcase also repair the broken filesystem and check if both system
and metadata block groups are back to the default 'DUP' profile
afterwards.

Link: https://lore.kernel.org/linux-btrfs/CAB_b4sBhDe3tscz=duVyhc9hNE+gu=B8CrgLO152uMyanR8BEA@mail.gmail.com/
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Naohiro Aota <naohiro.aota@wdc.com>
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Anand Jain <anand.jain@oracle.com>
4 months agobtrfs/058: fix test to actually have an open tmpfile during the send operation
Filipe Manana [Wed, 19 Mar 2025 12:13:28 +0000 (12:13 +0000)]
btrfs/058: fix test to actually have an open tmpfile during the send operation

The test's goal is to exercise a send operation while there's a tmpfile in
the snapshot, but that doesn't happen since the background xfs_io process
that created the tmpfile ends up exiting before we create the snapshot, so
the snapshot nevers gets a tmpfile.

Fix this by using a different approach, with a fifo and tailing it to the
stdin of a background xfs_io process and then writing to the fifo to
create the tmpfile. This keeps the xfs_io process running with the tmpfile
open while we snapshot and run the send operation.

While at it also add code to verify we have the tmpfile (an orphan inode
item) in the snapshot's tree.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Anand Jain <anand.jain@oracle.com>
4 months agogeneric: test fsync of file with no more hard links
Filipe Manana [Tue, 25 Mar 2025 12:24:40 +0000 (12:24 +0000)]
generic: test fsync of file with no more hard links

Test that if we fsync a file that has no more hard links, power fail and
then mount the filesystem, after the journal/log is replayed, the file
doesn't exists anymore.

This exercises a bug recently found and fixed by the following patch for
the linux kernel:

   btrfs: fix fsync of files with no hard links not persisting deletion

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agoxfs/206: filter out the zoned line from mkfs output
Christoph Hellwig [Fri, 21 Mar 2025 07:21:42 +0000 (08:21 +0100)]
xfs/206: filter out the zoned line from mkfs output

So that the test still passes with a zone enabled mkfs.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agoxfs/049: skip on zoned devices
Christoph Hellwig [Fri, 21 Mar 2025 07:21:41 +0000 (08:21 +0100)]
xfs/049: skip on zoned devices

This tes creates an ext2 file system, which doesn't support zoned
devices.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agoxfs: skip various tests when using the zoned allocator
Christoph Hellwig [Fri, 21 Mar 2025 07:21:40 +0000 (08:21 +0100)]
xfs: skip various tests when using the zoned allocator

Various file system features tested are incompatible with the zoned
allocator.  Add a _require_xfs_scratch_non_zoned to guard them.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agoxfs: skip filestreams tests on internal RT devices
Christoph Hellwig [Fri, 21 Mar 2025 07:21:39 +0000 (08:21 +0100)]
xfs: skip filestreams tests on internal RT devices

The filestreams tests using _test_streams force a run on the data
section, but for internal RT zoned devices the data section can be tiny
and might not provide enough space.  Skip these tests as they aren't
really useful when testing a zoned config anyway.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agoxfs: xfs_copy doesn't like RT sections
Christoph Hellwig [Fri, 21 Mar 2025 07:21:38 +0000 (08:21 +0100)]
xfs: xfs_copy doesn't like RT sections

internal or external..

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agoxfs: no quota support with internal rtdev
Christoph Hellwig [Fri, 21 Mar 2025 07:21:37 +0000 (08:21 +0100)]
xfs: no quota support with internal rtdev

Same as regular zoned, but the previous check didn't work.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agoxfs: handle zoned file systems in _scratch_xfs_force_no_metadir
Christoph Hellwig [Fri, 21 Mar 2025 07:21:36 +0000 (08:21 +0100)]
xfs: handle zoned file systems in _scratch_xfs_force_no_metadir

Zoned file systems required the metadir feature.  If the tests are run
on a conventional block device as the RT device, we can simply remove
the zoned flag an run the test, but if the file systems sits on a zoned
block device there is no way to run a test that wants a non-metadir
file system.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agoxfs: add helpers to require zoned/non-zoned file systems
Christoph Hellwig [Fri, 21 Mar 2025 07:21:35 +0000 (08:21 +0100)]
xfs: add helpers to require zoned/non-zoned file systems

Looking at the max_open_zones sysfs attribute to see if a file system is
zoned or not, as various tests depend on that.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>
4 months agocommon: allow _require_non_zoned_device without an argument
Christoph Hellwig [Fri, 21 Mar 2025 07:21:34 +0000 (08:21 +0100)]
common: allow _require_non_zoned_device without an argument

So that callers can pass $SCRATCH_RTDEV directly without needing to check
that it actually is set.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Zorro Lang <zlang@kernel.org>