When running multiple sections and hundreds of tests in each config
section, it's hard to see what failed from the summary output
because of the hundreds of tests listed in the "tests run" and
"tests not run" output. Add a "-b" option for brief result summaries
that only output the tests that failed and the summary count of
tests failed.
Signed-Off-By: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
In the NFS case an attempt to chdir out of a removed directory could
result in ESTALE, and that should not cause the test to fail.
This was causing intermittent failures on generic/011 on NFS.
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Since commit 9538d1b69399 (ext4: avoid split extents for DAX
writes), currently sitting in ext4 tree, the block layout of files
has changed when the filesystem is mounted with -o dax and now
matches 'nodelalloc' variant instead of 'nozero'. Fixup the test
configuration.
Signed-off-by: Jan Kara <jack@suse.cz>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Introduce a new test to demonstrates a known issue with overlayfs:
- process A opens file F for read
- process B writes new data to file F
- process A reads old data from file F
This issue is about to be fixed with a patch set by Miklos Szeredi.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
The tests mount the second device in the device pool but never
unmount it, causing the next test to fail.
Example:
$ cat local.config
export TEST_DEV=/dev/sdb
export TEST_DIR=/home/fdmanana/btrfs-tests/dev
export SCRATCH_MNT="/home/fdmanana/btrfs-tests/scratch_1"
export SCRATCH_DEV_POOL="/dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg"
export FSTYP=btrfs
$ ./check btrfs/125 btrfs/126
FSTYP -- btrfs
PLATFORM -- Linux/x86_64 debian3 4.8.0-rc8-btrfs-next-35+
MKFS_OPTIONS -- /dev/sdc
MOUNT_OPTIONS -- /dev/sdc /home/fdmanana/btrfs-tests/scratch_1
btrfs/125 23s ... 22s
btrfs/126 1s ... - output mismatch (see /home/fdmanana/git/hub/xfstests/results//btrfs/126.out.bad)
--- tests/btrfs/126.out 2016-11-24 06:11:42.048372385 +0000
+++ /home/fdmanana/git/hub/xfstests/results//btrfs/126.out.bad 2016-11-24 06:16:35.987988895 +0000
@@ -1,2 +1,5 @@
QA output created by 126
-pwrite: Disk quota exceeded
+ERROR: /dev/sdc is mounted
+mount: /dev/sdc is already mounted or /home/fdmanana/btrfs-tests/scratch_1 busy
+ /dev/sdc is already mounted on /home/fdmanana/btrfs-tests/scratch_1
+/home/fdmanana/btrfs-tests/scratch_1/test_file: Disk quota exceeded
...
(Run 'diff -u tests/btrfs/126.out /home/fdmanana/git/hub/xfstests/results//btrfs/126.out.bad' to see the entire diff)
Ran: btrfs/125 btrfs/126
Failures: btrfs/126
Failed 1 of 2 tests
So just make sure those test unmount the device before they finish.
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Since btrfs has always interpreted src_length=0 as "return 0 having
taken no action", test for that instead.
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>
This patch introduces a new testcase to test some small truncations
to check inline_data and its cached data are truncated correctly at
the same time.
The inline_data feature was introduced in ext4 and f2fs as follows.
ext4 : http://lwn.net/Articles/468678/
f2fs : http://lwn.net/Articles/573408/
The basic idea is embedding small-sized file's data into relatively
large inode space.
In ext4, up to 132 bytes of data can be stored in 256 bytes-sized inode.
In f2fs, up to 3.4KB of data can be embedded into 4KB-sized inode block.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
This patch adds case to test fsync and fdatasync with power-cuts.
The rule to check is:
1) fsync should guarantee all the inode metadata after power-cut,
2) fdatasync should guarantee i_size and i_blocks at least after
power-cut.
Note that, in XFS, it allocates more blocks when doing writes, so it
should close the file before fsync in order to get actual i_blocks
after power-cut. Or, it needs to do truncate the file with a
specific size to turn it off at the beginning.
Suggested-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
There have been a couple of logic bugs in `btrfs_get_extent()` which
could lead to spurious -EEXIST errors from read or write. This test
exercises those conditions by having two threads race to add an
extent to the extent map.
This is fixed by Linux commit 8dff9c853410 ("Btrfs: deal with
duplciates during extent_map insertion in btrfs_get_extent") and the
patch "Btrfs: deal with existing encompassing extent map in
btrfs_get_extent()"
(http://marc.info/?l=linux-btrfs&m=147873402311143&w=2).
Although the bug is Btrfs-specific, nothing about the test is.
Signed-off-by: Omar Sandoval <osandov@fb.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
This updates generic/098 by adding a sync option, i.e. 'sync' after
the second write, and with btrfs's NO_HOLES, we could still get
wrong isize after remount.
This gets fixed by the patch
'Btrfs: fix truncate down when no_holes feature is enabled'
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>
Some tests use "tmp/$$" as $tmp, and this would result in ENOENT
failure if $tmp is referenced in helpers or tests, because we have
no "tmp" dir in pwd.
Fix them to use "/tmp/$$" as all other tests do.
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
generic/38[3-6] are made generic from xfs tests to test project
quota on other filesystems, e.g. ext4. But we should make sure
project quota is enabled in between of _scratch_enable_pquota and
_qmount. Otherwise mount will fail if there's no project quota
support on SCRATCH_DEV, e.g. ext2 and ext3.
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
generic/373 and generic/374 test that cross-mountpoint reflink/dedupe
fail with EXDEV.
For this test, _scratch_mount is called a 2nd time with same mount
arguments, but a different value of SCRATCH_MNT.
This practice is incorrect for overlayfs, which should not be using
the same upper/work dirs on two different overlay super blocks.
Change the test to use bind mount instead, which results in the
expected setup for both block device mount and overlay mount.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Many of the commands using fallocate had an extra % at the beggining
of the error messages, missed the 0x prefix for hex output and printed
the length where it should print the end of the region.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
This is a testcase for a bug which goes way back; googling
"xfs_trans_log_inode NULL pointer dereference" yields sporadic
reports over several years.
The test sets up several two-extent files with speculative
preallocation on them, and then runs xfs_fsr. The kernelside
code ignores the preallocation, and therefore sets up the
temporary inode incorrectly after the inode fork swap.
It is a "dangerous" test because the extent mishandling on
the temporary inode causes a null pointer dereference and
oops when the inode's i_itemp pointer gets overwritten
and we blow up in logging code that tries to use it.
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Starting from xfsprogs commit 384283555871 ("xfs_db: print one array
element per line"), xfs_db prints one array element per line. This
breaks the filter in xfs/021, which now fails as:
hdr.freemap[0-2] = [base,size] [FREEMAP..]
+0:[104,1892]
+1:[0,0]
+2:[0,0]
entries[0-2] = [hashval,nameidx,incomplete,root,local] [ENTRIES..]
So we have extra lines that need to be filtered out,
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
There are a a few things about ocfs2 tools that need special-casing in
xfstests, so fix them so that we can start testing ocfs2.
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>
Due to the fact that btrfs uses different max extent size for
compressed and non-compressed write, it calculates metadata
reservation incorrectly.
This can leads to false ENOSPC alert for compressed write.
This test case will check it by using small fs and do parallel write
to trigger it.
It's highly recommened to use MOUNT_OPTIONS="-o compress" and
MKFS_OPTIONS="-n 64k" to trigger it. Without compression, it won't
be triggered.
The fix is not merged and may change in the future, but the function
is good enough:
btrfs: improve inode's outstanding_extents computation
btrfs: fix false enospc for compression
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Before xfsprogs commit a872b62 (xfs_copy: band-aids for CRC
filesystems), xfs_copy requires the "-d" option to copy a V5 XFS,
because it can't rewrite the UUID of V5 XFS properly.
Now xfs_copy already full support to copy a V5 XFS. But for above
old problem, xfstests use below patch to make sure xfs_copy always
use "-d" option to copy a V5 XFS:
8346e53 common: append -d option to XFS_COPY_PROG when testing v5 xfs
That cause xfstests miss the coverage of copying a V5 XFS without
"-d". For test this feature I did below things:
1. Changed init_rc(), add "-d" to $XFS_COPY_PROG if xfs_copy can't
copy a V5 XFS properly.
2. xfs/073 test V4 xfs forcibly by specify "-m crc=0" in case. I
think it's useless now, so remove it.
3. Changed xfs/032. If xfs_copy full support to copy a V5 XFS, test
with and without "-d" option, or only test with "-d" option.
Signed-off-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Multi-threads freeze/unfreeze maybe trigger some bugs, e.g: panic,
hang or data corruption etc. It does't check the return value of
freeze/unfreeze, but it tries to make sure fsstress won't run fails,
and no any other bugs happen.
[eguan: add comment on why we check _scratch_mount failure]
Signed-off-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
_test_inode_flag() and _test_inode_extsz() use "which $XFS_IO_PROG"
to check if xfs_io command is available. And "-i" option was added
to XFS_IO_PROG varibable by commit 54659ecdb5 ("fstests: run
xfs_io with -i option if supported"). So the command becomes "which
/usr/sbin/xfs_io -i", and it stops and waits for input from stdin,
because "-i" option of "which" means "Read aliases from stdin".
I've seen xfs/008 hang when testing with latest xfsprogs, where
xfs_io has "-i" support.
Fix it by removing the xfs_io command detections, and making xfs_io
mandatory in common/config.
Also fix the indentions in these functions, use tab instead of
spaces, while we're at it.
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Add basic CephFS support. No new CephFS specific tests are included,
just FSTYP="ceph" enablement.
Signed-off-by: Joao Eduardo Luis <joao@suse.de>
Reviewed-by: David Disseldorp <ddiss@suse.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>