xfstests-dev.git
6 years agofstests: filter readonly mount error messages
Eryu Guan [Tue, 14 Nov 2017 10:26:45 +0000 (18:26 +0800)]
fstests: filter readonly mount error messages

util-linux commit 6dede2f2f7c5 ("libmount: support MS_RDONLY on
write-protected devices") changed the error message on read-only
block device, and in the failure case printed one line message
instead of two (for details please see comments in common/filter),
and this change broke generic/050 and overlay/035.

Fix it by adding more filter rules to _filter_ro_mount and updating
associated .out files to unify the output from both old and new
util-linux versions.

Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay/036: filter busy mount message
Eryu Guan [Tue, 14 Nov 2017 08:56:00 +0000 (16:56 +0800)]
overlay/036: filter busy mount message

util-linux v2.30 changed error message of a busy mount and caused
overlay/036 to fail. e.g.

 - mount: <device> is already mounted or <mountpoint> busy
 + mount: <mountpoint>: <device> already mounted or mount point busy.

Filter the mount output by a newly introduced _filter_busy_mount
into a unified format.

   mount: device already mounted or mount point busy

Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agofstests: filter mount error message for EUCLEAN and ESTALE
Eryu Guan [Tue, 14 Nov 2017 07:49:36 +0000 (15:49 +0800)]
fstests: filter mount error message for EUCLEAN and ESTALE

util-linux commit ea848180dd34 ("libmount: add
mnt_context_get_excode()") since v2.30 changed the error message on
EUCLEAN and ESTALE again (and maybe other errno too):

 - mount: <device> on <mountpoint> failed: Structure needs cleaning
 + mount: <mountpoint>: mount(2) system call failed: Structure needs cleaning.

and it causes xfs/005, overlay/037 to fail (and probably xfs/333 too,
but it's always _notrun for now).

And what's more, the mentioned tests would also fail when testing
with util-linux prior to v2.21, no one complained just because the
tests are usually _notrun on such old distributions that ship
util-linux < v2.21.

So let's filter out the changing parts and keep the error message
simple.

Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric/456: document the fix commit
Amir Goldstein [Thu, 23 Nov 2017 06:43:43 +0000 (08:43 +0200)]
generic/456: document the fix commit

Add a link to Ted's post with more details about the bug
and the fix.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric/458: document the fix commit
Amir Goldstein [Thu, 23 Nov 2017 06:43:42 +0000 (08:43 +0200)]
generic/458: document the fix commit

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay/038: test consistent values of st_ino/d_ino for subdirs
Chandan Rajendra [Mon, 20 Nov 2017 14:34:10 +0000 (20:04 +0530)]
overlay/038: test consistent values of st_ino/d_ino for subdirs

This commit implements similar changes made to overlay/038 test i.e. in
addition to checking consistent values of st_ino/d_ino for "."  and ".."
entries, check also the values for subdir inside each tested directory
setup.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay/038: code cleanup
Chandan Rajendra [Mon, 20 Nov 2017 14:34:09 +0000 (20:04 +0530)]
overlay/038: code cleanup

This commit implements similar changes made to overlay/041 test i.e.
- Remove duplicate merged dir tests
- Remove duplicate pure upper dir inside merged dir tests
- Sort out comments and error messages

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric/459: add check for dm-snapshot target
Xiao Yang [Tue, 21 Nov 2017 06:27:20 +0000 (14:27 +0800)]
generic/459: add check for dm-snapshot target

generic/459 should be skipped when dm-snapshot is not supported.

Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoperf: a random write buffered fio perf test
Josef Bacik [Thu, 16 Nov 2017 18:29:59 +0000 (13:29 -0500)]
perf: a random write buffered fio perf test

This uses the new fio results perf helpers to run a rand write
buffered workload on the scratch device.

[eguan: add Makefile]

Signed-off-by: Josef Bacik <jbacik@fb.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agofstests: add fio perf results support
Josef Bacik [Tue, 7 Nov 2017 21:53:32 +0000 (16:53 -0500)]
fstests: add fio perf results support

This patch does the nuts and bolts of grabbing fio results and
storing them in a database in order to check against for future
runs.  This works by storing the results in resuts/fio-results.db as
a sqlite database.  The src/perf directory has all the supporting
python code for parsing the fio json results, storing it in the
database, and loading previous results from the database to compare
with the current results.

This also adds a PERF_CONFIGNAME option that must be set for this to
work.  Since we all have various ways we run fstests it doesn't make
sense to compare different configurations with each other (unless
specifically desired).  The PERF_CONFIGNAME will allow us to
separate out results for different test run configurations to make
sure we're comparing results correctly.

Currently we only check against the last perf result.  In the future
I will flesh this out to compare against the average of N number of
runs to be a little more complete, and hopefully that will allow us
to also watch latencies as well.

[eguan: add required Makefile updates]

Signed-off-by: Josef Bacik <jbacik@fb.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay/041: use user defined overlay mount option
Amir Goldstein [Sun, 19 Nov 2017 11:56:29 +0000 (13:56 +0200)]
overlay/041: use user defined overlay mount option

Mount non-samefs dirs with OVERLAY_MOUNT_OPTIONS, so user can opt-in
for constant inode numbers on non-samefs setup (i.e. -o xino) when
it is implemented.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay/041: test consistent values of st_ino/d_ino for subdirs
Amir Goldstein [Sun, 19 Nov 2017 11:56:28 +0000 (13:56 +0200)]
overlay/041: test consistent values of st_ino/d_ino for subdirs

In addition to checking consistent values of st_ino/d_ino for "."
and ".." entries, check also the values for subdir inside each
tested directory setup.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay/041: code cleanup
Amir Goldstein [Sun, 19 Nov 2017 11:56:27 +0000 (13:56 +0200)]
overlay/041: code cleanup

- Remove duplicate merged dir tests
- Remove duplicate pure upper dir inside merged dir tests
- Sort out comments and error messages

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay: Test hardlink breakage on non-samefs setup
Chandan Rajendra [Sat, 18 Nov 2017 05:58:04 +0000 (11:28 +0530)]
overlay: Test hardlink breakage on non-samefs setup

This commit adds a test to check hardlink breakage when the
overlayfs instance is composed of two different underlying
filesystem instances.

For example,
$ mount -t xfs /dev/loop0 /mnt/test
$ mount -t xfs /dev/loop1 /mnt/scratch
$ mkdir /mnt/scratch/upper
$ mkdir /mnt/scratch/work
$ mount -t overlay overlay -o lowerdir=/mnt/test \
        -o upperdir=/mnt/scratch/upper \
        -o workdir=/mnt/scratch/work /mnt/merge

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay: Test consistent st_ino numbers for non-samefs scenario
Chandan Rajendra [Sat, 18 Nov 2017 05:57:00 +0000 (11:27 +0530)]
overlay: Test consistent st_ino numbers for non-samefs scenario

This commit adds a test to verify consistent st_ino feature when
the overlayfs instance is composed of two different underlying
filesystem instances.

For example,
$ mount -t xfs /dev/loop0 /mnt/test
$ mount -t xfs /dev/loop1 /mnt/scratch
$ mkdir /mnt/scratch/upper
$ mkdir /mnt/scratch/work
$ mount -t overlay overlay -o lowerdir=/mnt/test \
        -o upperdir=/mnt/scratch/upper \
        -o workdir=/mnt/scratch/work /mnt/merge

The goal of this test is to verify that overlayfs returns consistent
st_ino for the following scenarios,
- Copy-up of lowerdir files
- Rename files and drop dentry/inode cache
- Remount the overlayfs instance

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay/018: Add constant d_ino test
Chandan Rajendra [Sat, 18 Nov 2017 05:58:03 +0000 (11:28 +0530)]
overlay/018: Add constant d_ino test

Constant d_ino for hardlinks is possible only when "index" config
feature/mount option is enabled.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay/017: Remove constant st_ino/d_ino test for hardlinks
Chandan Rajendra [Sat, 18 Nov 2017 05:58:02 +0000 (11:28 +0530)]
overlay/017: Remove constant st_ino/d_ino test for hardlinks

Constant st_ino/d_ino for hardlinks requires "index" config
feature/mount option to be enabled. overlay/018 already tests
constant st_ino feature for hardlinks. A future commit will add
constant d_ino test to overlay/018 test.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric: test zero page cache beyond new EOF on truncate down
Eryu Guan [Thu, 9 Nov 2017 08:32:42 +0000 (16:32 +0800)]
generic: test zero page cache beyond new EOF on truncate down

From mmap(2) manpage, "a file is mapped in multiples of the page
size. For a file that is not a multiple of the page size, the
remaining memory is zeroed when mapped", this test is to test this
behavior on truncate down.

This is inspired by an XFS bug that truncate down fails to zero page
cache beyond new EOF and causes stale data written to disk
unexpectedly and a subsequent mmap sees non-zeros post EOF.

Patch "xfs: truncate pagecache before writeback in
xfs_setattr_size()" fixed the bug on XFS.

Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agobtrfs/143: make test case more reliable
Liu Bo [Wed, 15 Nov 2017 23:47:59 +0000 (16:47 -0700)]
btrfs/143: make test case more reliable

This changes to use '_scratch_cycle_mount' to drop all caches btrfs
could have in order to avoid an issue that drop_caches somehow
doesn't work on Nikolay's box.

Also use bash -c to run 'read' only when %pid is odd so that we can
read the faulty disk.

Reported-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Tested-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoxfs/122: don't check xfs_iext_cursor
Darrick J. Wong [Thu, 16 Nov 2017 01:22:50 +0000 (17:22 -0800)]
xfs/122: don't check xfs_iext_cursor

Don't size-check the incore extent map cursor; it's not a disk
structure.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agocommon/rc: check dmesg for UBSAN errors
Darrick J. Wong [Thu, 16 Nov 2017 01:22:44 +0000 (17:22 -0800)]
common/rc: check dmesg for UBSAN errors

If the UBSAN complains about bad behavior, we should capture the
dmesg so that developers can inspect it.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoaio-dio-append-write-read-race: abort if we encounter syscall errors
Darrick J. Wong [Thu, 16 Nov 2017 01:22:37 +0000 (17:22 -0800)]
aio-dio-append-write-read-race: abort if we encounter syscall errors

If any of the library calls return error codes, just print out a message
and abort the test.  Whoever wrote the write test did not check for
write failures, which means that if we ENOSPC without writing anything
then the reader thread will loop forever trying to read.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric/45[34]: add emoji to the unusual fs naming test
Darrick J. Wong [Thu, 16 Nov 2017 01:22:31 +0000 (17:22 -0800)]
generic/45[34]: add emoji to the unusual fs naming test

Since we have a test to make sure that we can use Unicode points in
filesystem names, enhance it to check emoji names too.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agocommon/fuzzy: if the fuzz verb is random, keep fuzzing until we get a new value
Darrick J. Wong [Thu, 16 Nov 2017 01:22:25 +0000 (17:22 -0800)]
common/fuzzy: if the fuzz verb is random, keep fuzzing until we get a new value

If the fuzz verb is 'random', keep generating new random values
until we get one that is distinct from the previous value.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric: add testcase to test fallocate & f{data,}sync
Chao Yu [Wed, 15 Nov 2017 08:58:33 +0000 (16:58 +0800)]
generic: add testcase to test fallocate & f{data,}sync

f2fs can skip isize updating in fsync(), since during mount, f2fs
tries to recovery isize according to valid block address or
preallocated flag in last fsynced dnode block.

However, fallocate() breaks our rule with setting
FALLOC_FL_KEEP_SIZE flag, since it can preallocated block cross EOF,
once the file is fsynced, in POR, we will recover isize incorrectly
based on these fallocated blocks.

This patch adds a new testcase to test fallocate, in order to verify
whether filesystem will do correct recovery on isize.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agobtrfs: test for device dynamic rescan
Anand Jain [Wed, 15 Nov 2017 03:05:15 +0000 (11:05 +0800)]
btrfs: test for device dynamic rescan

Make sure missing device is included in the alloc list when it is
scanned on a mounted FS.

This test case needs btrfs kernel patch which is in the ML
  [PATCH] btrfs: handle dynamically reappearing missing device

Without the kernel patch, the test will run, but reports as
failed, as the device scanned won't appear in the alloc_list.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agosrc/t_dir_type.c: Use strtoul() instead of atoll()
Chandan Rajendra [Mon, 13 Nov 2017 14:45:26 +0000 (20:15 +0530)]
src/t_dir_type.c: Use strtoul() instead of atoll()

An overlayfs filesystem instance with one lowerdir filesystem and
with "xino" mount option enabled can have the layer index encoded in
the 63rd bit of the inode number. A signed 64 bit integer won't
suffice to store this inode number. Hence this commit uses strtoul()
to convert the inode number in string form to unsigned integer form.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric/204: use available blocks to determine the number of files to create
Darrick J. Wong [Tue, 7 Nov 2017 01:54:11 +0000 (17:54 -0800)]
generic/204: use available blocks to determine the number of files to create

Use the available block count to compute the number of files we think
we can create, rather than hardcoding a particular size.  This fixes
the ENOSPC failures for xfs filesystems with rmap/reflink support.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoxfs: test that we don't leak inodes and dquots during failed cow recovery
Darrick J. Wong [Fri, 10 Nov 2017 00:44:40 +0000 (16:44 -0800)]
xfs: test that we don't leak inodes and dquots during failed cow recovery

Add a couple of tests to check that we don't leak inodes or dquots
if CoW recovery fails and therefore the mount fails.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agocommon/fuzzy: ignore padding fields on xfs
Darrick J. Wong [Fri, 10 Nov 2017 00:44:34 +0000 (16:44 -0800)]
common/fuzzy: ignore padding fields on xfs

Padding fields are never checked and can have arbitrary values (if we
ever put them to use there'll be a feature flag) so there's no point
in fuzz-testing them.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoxfs/31[2-7]: hide pwrite fsync errors that are supposed to fail
Darrick J. Wong [Fri, 10 Nov 2017 00:44:28 +0000 (16:44 -0800)]
xfs/31[2-7]: hide pwrite fsync errors that are supposed to fail

xfs_io 4.14 will gain the ability to print error messages when
pwrite+fsync fail.  Certain tests use the error injector to cause
failures, so the errors are expected.  Since we test for a shut down
filesystem after the error injection, we can push the error messages to
the log.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agofstests: do not call _scratch_mkfs_sized in a pipe
Eryu Guan [Sun, 5 Nov 2017 06:14:11 +0000 (14:14 +0800)]
fstests: do not call _scratch_mkfs_sized in a pipe

_scratch_mkfs_sized will create a filesystem of the given size, and
call _notrun and exit if current $FSTYP doesn't support sized mkfs.
But when it's called in a pipe, the exit in _notrun only exits from
the subshell created by the pipe not the test itself, and test
continues to run unnecessarily, though the test is still reported as
[notrun] due to existence of $seqres.notrun file.

Fix it by not calling _scratch_mkfs_sized in a pipe, but dumping the
output to a tmp file, which will be fed to _filter_mkfs later.

Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoltp/fsx: allow comments when reading operations from logs
Eryu Guan [Wed, 25 Oct 2017 04:06:06 +0000 (12:06 +0800)]
ltp/fsx: allow comments when reading operations from logs

We use '--replay-ops' option to replay operations in the specified
operation log file, but we're not allowed to add comments for the
operations in the log, which might be useful when writing regression
tests that replay a given sequence of operations.

Now treat lines starting with '#' as comments and skip them when
reading operations.

Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agocommon/filter.btrfs: add 'zstd' to compress property filter
Misono, Tomohiro [Wed, 8 Nov 2017 04:27:00 +0000 (13:27 +0900)]
common/filter.btrfs: add 'zstd' to compress property filter

This fixes the false failure of btrfs/059 when running with the
mount option '-o compress=zstd'.

Signed-off-by: Tomohiro Misono <misono.tomohiro@jp.fujitsu.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric: add test with more open by file handle use cases
Amir Goldstein [Thu, 2 Nov 2017 10:15:39 +0000 (12:15 +0200)]
generic: add test with more open by file handle use cases

This test is a variant of test generic/426 that tests with less
files and more use cases:
- Create test dir with non empty files with known content and verify
  their content after opening file by handle.
- Check open by handle of directory.
- Check open by handle of files that have been unlinked, but still open.
- Check open by handle of files that have been renamed in same dir,
  moved to new dir and whose parent dir has been renamed.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric/426: factor out helper functions
Amir Goldstein [Thu, 2 Nov 2017 10:15:38 +0000 (12:15 +0200)]
generic/426: factor out helper functions

Helper test_file_handles() outputs the sub-test command to output,
so if errors are detected in one of the sub-tests, it is easier
to know which sub-tests have failed.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoopen_by_handle: test file handles of open files
Amir Goldstein [Thu, 2 Nov 2017 10:15:37 +0000 (12:15 +0200)]
open_by_handle: test file handles of open files

usage: open_by_handle -dk <test_dir> [N]

Get file handles for existing test set, keep open file handles for all
test files, unlink all test files, drop caches and try to open all files
by handle.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoopen_by_handle: test directory file handle
Amir Goldstein [Thu, 2 Nov 2017 10:15:36 +0000 (12:15 +0200)]
open_by_handle: test directory file handle

usage: open_by_handle -cp <test_dir> [N]
usage: open_by_handle  -p <test_dir> [N]
usage: open_by_handle -dp <test_dir> [N]

With -p flag, create/delete also the test_dir itself and try to open by
handle also test_dir itself after droping caches and use dir fd to test
faccessat() of a file inside dir.
mount_fd argument to open_by_handle_at() is open fd of test_dir's parent.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoopen_by_handle: test content of open file handle
Amir Goldstein [Thu, 2 Nov 2017 10:15:35 +0000 (12:15 +0200)]
open_by_handle: test content of open file handle

usage: open_by_handle -rwa <test_dir> [N]

Get file handles for existing test set, write data to files,
drop caches, open all files by handle, read data and verify old data,
write new data to files.

This is needed for testing that overlay decoded file handles are not
pointing the lower inodes after new data is already written to upper
inodes after copy up.

open_by_handle -a is needed for testing copy up of disconnected overlay
decoded file handles (to index dir).

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoopen_by_handle: test file handles of renamed files
Amir Goldstein [Thu, 2 Nov 2017 10:15:34 +0000 (12:15 +0200)]
open_by_handle: test file handles of renamed files

usage: open_by_handle -m <test_dir> [N]

Get file handles for existing test set, rename all test files,
drop cache and try to open all files by handle.

This is needed for testing that overlayfs can find the upper
inode from lower file handle even when upper is not in the same
path as lower.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoopen_by_handle: add filename to error reports
Amir Goldstein [Thu, 2 Nov 2017 10:15:33 +0000 (12:15 +0200)]
open_by_handle: add filename to error reports

This makes it easier to understand which of the tests
failed when testing on overlay lower and upper files.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoxfs/020: check that we have enough space to write out a huge fs
Darrick J. Wong [Fri, 3 Nov 2017 04:28:02 +0000 (21:28 -0700)]
xfs/020: check that we have enough space to write out a huge fs

Make sure that we have enough free space on the test fs to create a
60t sparse filesystem.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric: test IO at maximum file offset
Darrick J. Wong [Fri, 3 Nov 2017 04:27:17 +0000 (21:27 -0700)]
generic: test IO at maximum file offset

Make sure we can write to and read from the highest possible offset
that Linux will allow.  Format the filesystem with a variety of
possible blocksizes to stress the filesystem.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoxfs/013: don't fail because cp ran out of space
Darrick J. Wong [Wed, 1 Nov 2017 21:47:48 +0000 (14:47 -0700)]
xfs/013: don't fail because cp ran out of space

Don't fail xfs/013 just because cp -Rl runs out of space to allocate
inodes and sprays the ENOSPC messages into the golden output.  We
want to stress the finobt by using cp to push us near ENOSPC
conditions, so it's fine to let cp run out of space.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoxfs: filter and record the unknown block state messages
Darrick J. Wong [Wed, 1 Nov 2017 21:47:36 +0000 (14:47 -0700)]
xfs: filter and record the unknown block state messages

Record the unknown block state messages that xfs_repair produces
when we nuke the finobt.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoxfs/122: add inode log formats
Darrick J. Wong [Wed, 1 Nov 2017 21:47:30 +0000 (14:47 -0700)]
xfs/122: add inode log formats

The inode log record formats have been standardized, so check them here.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric/459: explicitly require thin_check
Darrick J. Wong [Wed, 1 Nov 2017 21:47:11 +0000 (14:47 -0700)]
generic/459: explicitly require thin_check

The lvm command can invoke the thin pool utilities as part of
managing a thin volume. It'll fail if the thin provisioning
utilities are not installed, so we need to check for its presence
before running a test.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agobtrfs: test for qgroup reservation leaks with prealloc
Justin Maggard [Mon, 30 Oct 2017 22:33:48 +0000 (15:33 -0700)]
btrfs: test for qgroup reservation leaks with prealloc

This test case writes into pre-allocated space, then tries to
fallocate some more within the defined quota limit. Currently
(4.14-rc7) this fails with EDQUOT due to quota reservation leakage
when writing into pre- allocated space.

A possible fix has been sent to the ML as "btrfs: Fix quota
reservation leak on preallocated files"

Signed-off-by: Justin Maggard <jmaggard@netgear.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agobtrfs: test if receive with qgroups corrupts metadata
Justin Maggard [Mon, 30 Oct 2017 22:32:45 +0000 (15:32 -0700)]
btrfs: test if receive with qgroups corrupts metadata

This test case does some concurrent send/receives with qgroups
enabled.  Currently (4.14-rc7) this usually results in btrfs check
errors, and often also results in a WARN_ON in
record_root_in_trans().

Bisecting points to 6426c7ad697d (btrfs: qgroup: Fix qgroup
accounting when creating snapshot) as the culprit.

Signed-off-by: Justin Maggard <jmaggard@netgear.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay: test creating lower hardlinks for copied up files
Amir Goldstein [Mon, 30 Oct 2017 12:06:56 +0000 (14:06 +0200)]
overlay: test creating lower hardlinks for copied up files

kernel v4.13 introduced the index=on feature for not breaking
hardlinks on copy-up.  With the index feature enabled a regression
was introduced - lower files that are hardlined while overlay is
offline can result in lookup error after overlay in mounted.

The regression was fixed by upstream commit
  6eaf011144af ovl: fix EIO from lookup of non-indexed upper
that was merged to v4.14-rc7.

This test verifies that behavior is sane after creating lower
hardlinks for copied up files while overlayfs is offline.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agocommon/rc: force mkfs for xfs in _mkfs_dev
Darrick J. Wong [Sat, 28 Oct 2017 17:08:56 +0000 (10:08 -0700)]
common/rc: force mkfs for xfs in _mkfs_dev

In generic/459, if the DISCARD of the thin device somehow fails with
this message:

device-mapper: thin: Data device (dm-1) discard unsupported: Disabling discard passdown.

Then we can end up with arbitrary gunk in the thin device.  This
causes mkfs to fail because it's afraid to format the device.  Don't
be afraid, just zap it.  FWIW mkfs.xfs thinks that the thinp device
has an xfs external log because sometimes the thinp device just
happen to be backed by the log of the previous test's scratch fs.

Fix this by making the _mkfs_dev helper always format the device,
per Eryu Guan's suggestion.

[eguan: fix subject to reflect the fix is in common/rc]

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoxfs/333: fix errors with new inode pointer verifiers
Darrick J. Wong [Fri, 27 Oct 2017 20:24:07 +0000 (13:24 -0700)]
xfs/333: fix errors with new inode pointer verifiers

Fix test failures with new inode pointer verifiers... and also make
sure that the running xfs actually supports realtime rmap. (This
should stop the current crop of weird test failures since nobody has
rtrmap yet anyway...)

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agocommon/xfs: remove inode-paths cruft
Darrick J. Wong [Fri, 27 Oct 2017 20:25:50 +0000 (13:25 -0700)]
common/xfs: remove inode-paths cruft

Remove the inode-paths check from _check_xfs_test_fs because we don't
support inode paths, xfsprogs doesn't have a xfs_{check,repair}_ipaths
tool, and it's broken anyway because we ignore _check_xfs_filesystem
(which tells whether or not the filesystem is even still mounted).

[eguan: also fix the return value of _check_xfs_test_fs]

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agofstests: add module reloading helpers
Darrick J. Wong [Fri, 27 Oct 2017 20:23:08 +0000 (13:23 -0700)]
fstests: add module reloading helpers

Add some helper functions to require that we can reload a given
module, and add a helper to actually do that.  Refactor the existing
users to use the generics.

We need to hoist completely the behaviors of the old btrfs module
helper because we need to confirm before starting the test that we
actually can remove the module.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agocommon/xfs: standardize the xfs_scrub output that gets recorded to $seqres.full
Darrick J. Wong [Thu, 26 Oct 2017 05:51:51 +0000 (22:51 -0700)]
common/xfs: standardize the xfs_scrub output that gets recorded to $seqres.full

Make the xfs_scrub output that gets recorded to $seqres.full follow
the format of xfs_repair checks.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agocommon/xfs: refactor xfs_scrub presence testing
Darrick J. Wong [Fri, 27 Oct 2017 20:21:46 +0000 (13:21 -0700)]
common/xfs: refactor xfs_scrub presence testing

Move all the requirements checking for xfs_scrub into a helper function.
Make sure the helper properly detects the presence of the scrub ioctl
and situations where we can't run scrub (e.g. norecovery).

Refactor the existing three xfs_scrub call sites to use the helper to
check if it's appropriate to run scrub.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agocommon/fuzzy: online re-scrub should not preen
Darrick J. Wong [Fri, 27 Oct 2017 00:43:12 +0000 (17:43 -0700)]
common/fuzzy: online re-scrub should not preen

When we're doing the second online scrub (to figure out if the
repair did any good) we shouldn't let that second scrub preen the
filesystem in any way. If scrub finds things it can't/won't preen
that turns into a nonzero return code which gets reported
(incorrectly) as a failure.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric/45[34]: force UTF-8 codeset to enable utf-8 namer checks in xfs_scrub
Darrick J. Wong [Thu, 26 Oct 2017 05:51:58 +0000 (22:51 -0700)]
generic/45[34]: force UTF-8 codeset to enable utf-8 namer checks in xfs_scrub

The upcoming xfs_scrub tool will have the ability to warn about
suspicious UTF-8 normalization collisions.  We want generic/45[34]
to be able to test this functionality, but to do that we have to
forcibly set the codeset to UTF-8 via LC_ALL since the rest of
xfstests only uses LC_ALL=C.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoquota: clear speculative delalloc when checking quota usage
Darrick J. Wong [Thu, 26 Oct 2017 05:51:39 +0000 (22:51 -0700)]
quota: clear speculative delalloc when checking quota usage

Occasionally speculative preallocation kicks in when writing files
to a filesystem under test.  These preallocations consume quota and
/usually/ aren't around after we drop_caches, but there's nothing to
guarantee that they actually have, so the quota reports will be
different before and after the fs remount, causing sporadic test
failures in generic/{23[123],270}.

We now have xfs_spaceman which can instruct XFS to forcibly remove
the speculative preallocations.  This fixes the sporadic failures,
at least for XFS.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agobtrfs/010: fix offset in test Btrfs delalloc accounting overflow
Robbie Ko [Thu, 26 Oct 2017 06:02:15 +0000 (14:02 +0800)]
btrfs/010: fix offset in test Btrfs delalloc accounting overflow

Found it when test btrfs delalloc accounting overflow, Fix offset
error.  We will fill in the gaps between the created extents, then
outstanding extents will all be merged into 1.

Signed-off-by: Robbie Ko <robbieko@synology.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agobtrfs/130: Remove from auto group
Qu Wenruo [Mon, 23 Oct 2017 01:48:54 +0000 (09:48 +0800)]
btrfs/130: Remove from auto group

No agreement on how to fix it in the foreseeable future. So remove
it from auto group to prevent newbie tester from spending days
waiting it to finish.

Reported-by: Po-Hsu Lin <po-hsu.lin@canonical.com>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay/038: Remove usage of _overlay_scratch_unmount
Chandan Rajendra [Thu, 19 Oct 2017 13:49:07 +0000 (19:19 +0530)]
overlay/038: Remove usage of _overlay_scratch_unmount

_overlay_scratch_unmount is not supposed to be invoked directly by
tests. Also, since unmounting scratch fs is optional, this commit
removes invocation of _overlay_scratch_unmount.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agolog-writes: fix possible infinite loop in zero_range()
Hou Tao [Tue, 17 Oct 2017 03:20:45 +0000 (11:20 +0800)]
log-writes: fix possible infinite loop in zero_range()

Found it when trying to remove the limitation of log->max_zero_size.

Signed-off-by: Hou Tao <houtao1@huawei.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agobtrfs: test if device delete ends up with losing raid profile
Liu Bo [Mon, 16 Oct 2017 16:51:20 +0000 (10:51 -0600)]
btrfs: test if device delete ends up with losing raid profile

Currently running 'btrfs device delete' can end up with losing data
raid profile (if any), this test is to reproduce the problem.

The fix is
     "Btrfs: avoid losing data raid profile when deleting a device"

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoxfs: test for NULL xattr buffer problem during unlink
Brian Foster [Thu, 12 Oct 2017 11:36:27 +0000 (07:36 -0400)]
xfs: test for NULL xattr buffer problem during unlink

XFS had a bug that resulted in an unexpected NULL buffer during
unlink of an inode with a multi-level attr fork tree. This occurred
due to a stale reference to content in a released/reclaimed buffer.

Use the XFS buffer LRU reference count error injection tag to
recreate the conditions for the bug. Create a file with a
multi-level attr fork tree and then unlink it with buffer caching
disabled.

Commit f35c5e10c6ed ("xfs: reinit btree pointer on attr tree
inactivation walk") fixed the bug.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay: Test consistent d_ino feature for non-samefs setup
Chandan Rajendra [Thu, 12 Oct 2017 13:34:32 +0000 (19:04 +0530)]
overlay: Test consistent d_ino feature for non-samefs setup

This commit adds a test to verify consistent d_ino feature when
the overlayfs instance is composed of two different underlying
filesystem instances.

For example,
$ mount -t xfs /dev/loop0 /mnt/test
$ mount -t xfs /dev/loop1 /mnt/scratch
$ mkdir /mnt/scratch/upper
$ mkdir /mnt/scratch/work
$ mount -t overlay overlay -o lowerdir=/mnt/test \
        -o upperdir=/mnt/scratch/upper \
-o workdir=/mnt/scratch/work /mnt/merge

The goal of this test is to verify that the inode numbers returned by
readdir(3) (i.e. dirent->d_ino) are consistent with inode numbers
returned by stat(2) (i.e. stat->st_ino) in all the below listed cases,
- Parent's (i.e. "..") d_ino must always be calculated because a
  pure dir can be residing inside a merged dir.
- d_ino for "." must always be calculated because the present
  directory can have a copy-up origin.
- Verify d_ino of '.' and '..' before and after dir becomes impure.
  While at it also verify if trusted.overlay.impure xattr is
  set/reset appropriately and invalidation of readdir cache.
- Verify copied up file's (inside a impure dir) d_ino.
- Verify invalidation of readdir cache.
- Verify d_ino values corresponding to "." and ".." entries of a
  pure lower dir.
- Verify d_ino of ".." entry of a merged dir.
- Verify pure lower residing in dir which has another lower layer

Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric/036,208: whitelist [iomap_]dio_complete() WARNs
Ilya Dryomov [Thu, 12 Oct 2017 14:54:04 +0000 (16:54 +0200)]
generic/036,208: whitelist [iomap_]dio_complete() WARNs

These tests appear to mix buffered and O_DIRECT I/O; easily triggered
on both xfs and ext4.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agocommon: turn _filter_xfs_dmesg() into _filter_aiodio_dmesg()
Ilya Dryomov [Thu, 12 Oct 2017 14:54:03 +0000 (16:54 +0200)]
common: turn _filter_xfs_dmesg() into _filter_aiodio_dmesg()

With upstream commit 332391a9935d ("fs: Fix page cache inconsistency
when mixing buffered and AIO DIO"), ext4 (and probably other
non-iomap based filesystems) need a _check_dmesg() whitelist entry
for a new WARN in dio_complete() -- generic/095 and 247 trigger a
dio_complete() splat pretty reliably for me.

Add dio_complete() entry to _filter_xfs_dmesg(), rename it and use
it unconditionally in generic/095, 224, 247 and 446.

[eguan: source common/filter too in generic/446]

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agocommon: move _filter_xfs_dmesg() to common/filter
Ilya Dryomov [Thu, 12 Oct 2017 14:54:02 +0000 (16:54 +0200)]
common: move _filter_xfs_dmesg() to common/filter

Move this XFS-specific _filter_xfs_dmesg() to common/filter so all
tests could use it. It will be renamed & made more generic and used
by more tests in later patches.

[eguan: add commit log]

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay/036: expect EBUSY for dir inuse only when mounting with index=on
Amir Goldstein [Thu, 12 Oct 2017 06:33:29 +0000 (09:33 +0300)]
overlay/036: expect EBUSY for dir inuse only when mounting with index=on

This fixes test failure with kernel v4.14-rc4 and default index=off
configuration.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric/166: speed up on slow disks
Dave Chinner [Wed, 11 Oct 2017 23:15:44 +0000 (10:15 +1100)]
generic/166: speed up on slow disks

generic/166 is takes way too long to run on iscsi disks - over an
*hour* on flash based iscsi targets. In comparison, it takes 18s to
run on a pmem device.

The issue is that it takes 3-4s per file write cycle on slow disks,
and it does a thousand write cycles. The problem is taht reflink is
so much faster than the write cycle that it's doing many more
snapshots on slow disks than fast disks, and this slows it down even
more.

e.g. the pmem system that takes 18s to run does just under 1000
snapshots - roughly one per file write. 20 minutes into the iscsi
based test, it's only done ~300 write cycles but there are almost
10,000 snapshots been taken. IOWs, we're doing 30 snapshots a file
write, not ~1.

Fix this by rate limiting snapshots to at most 1 per whole file
write. This reduces the number of snapshots taken on fast devices by
~50% (runtime on pmem device went from 18s -> 8s) but reduced it to
1000 on slow devices and reduced runtime from 3671s to just 311s.

Signed-Off-By: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric/422: Do not hardcode space used by files
Andreas Gruenbacher [Tue, 10 Oct 2017 10:21:14 +0000 (12:21 +0200)]
generic/422: Do not hardcode space used by files

Test generic/422 hardcodes in the output file how much space files it
creates are supposed to take up on disk.  This doesn't work when
additional space is allocated for extended attributes for ACLs or
SELinux labels.

Instead, record the actual space used in generic/422.full, and only
check if the writeback changes the space used.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric: test race when checking i_size on direct i/o read
Zheng Liu [Fri, 18 Aug 2017 20:35:02 +0000 (15:35 -0500)]
generic: test race when checking i_size on direct i/o read

In this commit a new test case is added to test that i_size races
don't occur under dio reads/writes.  We add a program in /src dir,
which has a writer to issue some append dio writes.  Meanwhile it
has a reader in this test to do some dio reads.  As we expect,
reader should read nothing or data with 'a'. But it might read some
data with '0'.

The bug can be reproduced by this test case [1].

1.  http://patchwork.ozlabs.org/patch/311761/

This ostensibly tests commit:
9fe55eea7 Fix race when checking i_size on direct i/o read

Update by Eric Sandeen:
- update to recent xfstests
- update commit log

Update by Eryu Guan:
- add aio-dio support to the test and add 'aio' group
- add ability to test different alignments
- move test from src/ to src/aio-dio-regress/
- add .gitignore entry
- rebase against latest xfstests with various minor fixes & cleanups
- update commit log

Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Zheng Liu <wenqing.lz@taobao.com>
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric: test race between block map change and writeback
Eryu Guan [Tue, 10 Oct 2017 07:42:07 +0000 (15:42 +0800)]
generic: test race between block map change and writeback

Run delalloc writes & append writes & non-data-integrity syncs
concurrently to test the race between block map change vs writeback.

This is to cover an XFS bug that data could be written to wrong
block and delay allocated blocks are leaked because the block map
was changed due to the removal of speculative allocated eofblocks
when writeback is in progress.

And this test partially mimics what lustre-racer[1] test does, using
which this bug was first found.

[1] https://git.hpdd.intel.com/?p=fs/lustre-release.git;a=tree;f=lustre/tests/racer;hb=HEAD

Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoxfs/246: add _require_scratch
Hans Holmberg [Tue, 10 Oct 2017 13:31:16 +0000 (15:31 +0200)]
xfs/246: add _require_scratch

The test uses a scratch device, so add _require_scratch so
the test will be skipped instead of failing when $SCRATCH_DEV
has not been specified.

Signed-off-by: Hans Holmberg <hans.holmberg@cnexlabs.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay: deduplicate code in overlay mount helpers
Amir Goldstein [Thu, 28 Sep 2017 11:55:10 +0000 (14:55 +0300)]
overlay: deduplicate code in overlay mount helpers

factor out helpers _overlay_base_mount() and _overlay_base_umount()
to reduce code duplication.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay: move _overlay helpers to common/overlay
Amir Goldstein [Wed, 27 Sep 2017 10:47:32 +0000 (13:47 +0300)]
overlay: move _overlay helpers to common/overlay

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay: fix _overlay_config_override of MOUNT_OPTIONS
Amir Goldstein [Wed, 27 Sep 2017 07:04:12 +0000 (10:04 +0300)]
overlay: fix _overlay_config_override of MOUNT_OPTIONS

The config variable OVERLAY_MOUNT_OPTIONS is used to configure
the overlay mount options when running ./check -overlay.
The config variable MOUNT_OPTIONS is used to configure the
mount options for base fs.

If config sets value of OVERLAY_MOUNT_OPTIONS and
does not set MOUNT_OPTIONS, the value of MOUNT_OPTIONS
may be leftover from previous _overlay_config_override, so
don't use that value for base fs mount.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay: create helper _overlay_scratch_mount_dirs()
Amir Goldstein [Wed, 27 Sep 2017 07:04:11 +0000 (10:04 +0300)]
overlay: create helper _overlay_scratch_mount_dirs()

A helper to mount with same options/mnt/dev of scratch mount, but
optionally with different lower/upper/work dirs.
use instead of _overlay_mount_dirs() in all tests where applicable.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay: use default overlay mount options _overlay_mount_dirs()
Amir Goldstein [Wed, 27 Sep 2017 07:04:10 +0000 (10:04 +0300)]
overlay: use default overlay mount options _overlay_mount_dirs()

Tests that use _overlay_mount_dirs() should also use the
default overlay mount options.
Move mount options from overlay_mount() into _overlay_mount_dirs()
and use helper common_dev_mount_opts() to get options.

OVERLAY_MOUNT_OPTIONS is assigned to MOUNT_OPTIONS, so
there is no need to use OVERLAY_MOUNT_OPTIONS directly.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay: remove stale implementation of _scratch_mount_options
Amir Goldstein [Wed, 27 Sep 2017 07:04:09 +0000 (10:04 +0300)]
overlay: remove stale implementation of _scratch_mount_options

_scratch_mount_options() was not implemented correctly for
overlayfs and wasn't used by any overlay tests.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoext4: skip project quota tests if the kernel does not support them
Theodore Ts'o [Sun, 8 Oct 2017 19:27:46 +0000 (15:27 -0400)]
ext4: skip project quota tests if the kernel does not support them

In _scratch_enable_pquota, use _notrun if the file system with project
quotas enable can't be mounted, since that indicates the kernel
doesn't support that feature.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Acked-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay/038: Miscellaneous fixes
Chandan Rajendra [Sun, 8 Oct 2017 11:25:35 +0000 (16:55 +0530)]
overlay/038: Miscellaneous fixes

This commit removes the redundant chown operation which was supposed to
cause the test file to be copied up. Also, _overlay_scratch_unmount() is
used to unmount the overlay filesystem rather than invoking $UMOUNT_PROG.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agocommon/rc: Further improve gfs2 support
Andreas Gruenbacher [Wed, 4 Oct 2017 18:20:09 +0000 (20:20 +0200)]
common/rc: Further improve gfs2 support

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric: add a new test for racing AIO COW writes
Christoph Hellwig [Wed, 4 Oct 2017 06:16:16 +0000 (08:16 +0200)]
generic: add a new test for racing AIO COW writes

This can be used to trigger an assert in the current XFS code
because it can't handle the case where there are COW extents on a
file, but none at or below the range converted by the AIO completion
handler.

Note that it doesn't trigger the assert 100% but fairly reliably.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agobulkstat_unlink_test_modified: Remove extraneous if statement
Rostislav Skudnov [Fri, 6 Oct 2017 08:25:19 +0000 (08:25 +0000)]
bulkstat_unlink_test_modified: Remove extraneous if statement

Fixes the following compiler warning:

bulkstat_unlink_test_modified.c:171:26: warning: equality comparison
with extraneous parentheses [-Wparentheses-equality]
                    if ((ret[i].bs_ino == inodelist[j])) {
                         ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~

Signed-off-by: Rostislav Skudnov <rostislav@tuxera.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoholetest: Use pid_t type for fork(2) return value
Rostislav Skudnov [Fri, 6 Oct 2017 08:19:46 +0000 (08:19 +0000)]
holetest: Use pid_t type for fork(2) return value

Signed-off-by: Rostislav Skudnov <rostislav@tuxera.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agowritev_on_pagefault: Use ssize_t type for write(2) return value
Rostislav Skudnov [Thu, 5 Oct 2017 12:49:58 +0000 (12:49 +0000)]
writev_on_pagefault: Use ssize_t type for write(2) return value

Signed-off-by: Rostislav Skudnov <rostislav@tuxera.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agofsstress: Fix wrong size argument to getcwd()
Rostislav Skudnov [Thu, 5 Oct 2017 12:49:57 +0000 (12:49 +0000)]
fsstress: Fix wrong size argument to getcwd()

Fixes the following ASAN failure:

==11670==WARNING: AddressSanitizer failed to allocate 0xffffffffffffffff bytes
==11670==AddressSanitizer's allocator is terminating the process instead of returning 0

...

    #5 0x4bb230 in __interceptor_malloc /home/vak-local/3.9.1/release/final/llvm.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:65:10
    #6 0x7f97e6491405 in getcwd /build/glibc-6V9RKT/glibc-2.19/io/../sysdeps/unix/sysv/linux/getcwd.c:68
    #7 0x454691 in getcwd /home/vak-local/3.9.1/release/final/llvm.src/projects/compiler-rt/lib/asan/../sanitizer_common/sanitizer_common_interceptors.inc:2822:15
    #8 0x4f765d in doproc /.../ltp/fsstress.c:933:12
    #9 0x4f5f54 in main /.../ltp/fsstress.c:581:5

Signed-off-by: Rostislav Skudnov <rostislav@tuxera.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agooverlay/038: Remove af_unix program requirement
Chandan Rajendra [Fri, 6 Oct 2017 09:29:33 +0000 (14:59 +0530)]
overlay/038: Remove af_unix program requirement

overlay/038 does not use src/af_unix program. This commit removes the
corresponding _require_test_program statement.

Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agofstests: update mkfs.xfs filters for new refactoring
Dave Chinner [Tue, 3 Oct 2017 08:21:34 +0000 (19:21 +1100)]
fstests: update mkfs.xfs filters for new refactoring

From: Dave Chinner <dchinner@redhat.com>

The new mkfs code adds some output to indicate where the defaults
were sourced from, so filter that out so it doesn't contaminate
tests unnecessarily.

Signed-Off-By: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoreport: fix summary statistics in xUnit header
Theodore Ts'o [Mon, 2 Oct 2017 03:39:32 +0000 (23:39 -0400)]
report: fix summary statistics in xUnit header

The xUnit XML DTD distinguishes between test failures and test errors,
where a test failure indicate that the test has explicitly indicated
that the code under test has behaved in an unexpected fashion, whereas
a test error indicates the test code itself has thrown an error or
there has been some other test implementation error.

Xfstest failures are correctly marked as xUnit failures, but in the
attributes of the testsuite XML element, the number of test failures
was incorrectly reported as the number of errors.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Cc: Dmitry Monakhov <dmonakhov@openvz.org>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoreport: encode XML Character Entities in xUnit report
Theodore Ts'o [Sat, 30 Sep 2017 03:46:21 +0000 (23:46 -0400)]
report: encode XML Character Entities in xUnit report

Since the xUnit report is an XML document, special XML characters such
as '<', '>', '&', etc. have to be encoded as "&lt;", "&gt;", etc.
Otherwise programs parsing something like this:

<testcase classname="xfstests.global" name="generic/450" time="0">
<skipped message="Only test on sector size < half of block size" />
</testcase>

Will get choke the unescaped '<' character in the skipped message.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Cc: Dmitry Monakhov <dmonakhov@openvz.org>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agosrc/nsexec: fix stack pointer alignment exception
Zorro Lang [Fri, 29 Sep 2017 16:49:25 +0000 (00:49 +0800)]
src/nsexec: fix stack pointer alignment exception

When test g/317 or g/318 on ARM server, we got a kernel exception:

  kernel: nsexec[8203]: SP Alignment exception: pc=00000000004010a0 sp=00000000005200e8

nsexec gives an unaligned child stack address to clone() system
call sometimes. For making sure it's always aligned, use
"__attribute__((aligned))" extension of GCC (Thanks this suggestion
from Eric sandeen).

Signed-off-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agoxfs: test increased overlong directory extent discard threshold
Darrick J. Wong [Fri, 29 Sep 2017 05:37:39 +0000 (22:37 -0700)]
xfs: test increased overlong directory extent discard threshold

As of 2007, metadump has an interesting "feature" where it discards
directory extents that are longer than 1000 (originally 20) blocks.
This ostensibly was to protect metadump from corrupt bmbt records, but
it also has the effect of omitting from the metadump valid long extents.
The end result is that we create incomplete metadumps, which is
exacerbated by the lack of warning unless -w is passed.

So now that we've fixed the default threshold to MAXEXTLEN, check that
the installed metadump no longer exhibits this behavior.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agocommon/xfs: add iomap_dio_complete() to the dmesg filter
Eryu Guan [Fri, 29 Sep 2017 04:05:41 +0000 (12:05 +0800)]
common/xfs: add iomap_dio_complete() to the dmesg filter

Kernel commit 332391a9935d ("fs: Fix page cache inconsistency when mixing
buffered and AIO DIO") moved the WARN_ON_ONCE() into iomap_dio_complete(),
along with the page cache invalidation. Let's add iomap_dio_complete() to the
filter whitelist too, so this expected warning when mixing direct I/O with
buffered I/O won't fail tests.

Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric/447: not a quick test
Amir Goldstein [Thu, 28 Sep 2017 16:40:41 +0000 (19:40 +0300)]
generic/447: not a quick test

It hogged my cpu for a good 300s.
Test was inheritted from generic/176, which is not quick.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogeneric: mmap write readonly DAX file
Xiong Zhou [Thu, 28 Sep 2017 07:41:39 +0000 (15:41 +0800)]
generic: mmap write readonly DAX file

Regression case that one can write to read-only
file in a DAX mountpoint.

Signed-off-by: Xiong Zhou <xzhou@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agogitignore: sort src/ binaries name
Xiong Zhou [Thu, 28 Sep 2017 07:41:38 +0000 (15:41 +0800)]
gitignore: sort src/ binaries name

Signed-off-by: Xiong Zhou <xzhou@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
6 years agotests: add new group dax
Xiong Zhou [Thu, 28 Sep 2017 07:41:37 +0000 (15:41 +0800)]
tests: add new group dax

Signed-off-by: Xiong Zhou <xzhou@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>