Eric Biggers [Thu, 15 Dec 2016 20:26:21 +0000 (12:26 -0800)]
generic: test setting and getting encryption policies
Several kernel bugs were recently fixed regarding the constraints
for setting encryption policies. Add tests for these cases and a
few more.
Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eric Biggers [Thu, 15 Dec 2016 20:26:20 +0000 (12:26 -0800)]
encrypt: add utilities for testing filesystem encryption
Add utility functions for testing filesystem-level encryption via
the common API currently supported by ext4 and f2fs, in development
for ubifs and planned for xfs. Setting and getting encryption
policies will use new commands being added to xfs_io, while adding
and removing encryption keys will use keyctl.
Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Qu Wenruo [Tue, 20 Dec 2016 01:24:56 +0000 (09:24 +0800)]
btrfs/047: Remove test since upstream don't accept stream-version
Btrfs upstream doesn't accept stream-version, so the test is never
ran on upstream kernel nor btrfs-progs.
Just remove it.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Sun, 4 Dec 2016 16:15:08 +0000 (00:15 +0800)]
fstests: teach _scratch_mkfs to handle mkfs option conflicts
Currently in _scratch_mkfs only xfs and ext4 could handle the mkfs
failure caused by conflicts between $MKFS_OPTIONS and mkfs options
specified by tests, because of _scratch_mkfs_xfs and
_scratch_mkfs_ext4. This is a very useful functionality that allows
tests to specify mkfs options safely and to test specific fs
configurations, without worrying about mkfs failures caused by these
options.
Now teach _scratch_mkfs to handle such mkfs option conflicts for
other filesystems too, i.e. mkfs again only with mkfs options
specified by tests. Also add the ability to filter unnecessary
messages from mkfs stderr.
Also update some btrfs tests to throw away _scratch_mkfs stdout,
because previously _scratch_mkfs did this for btrfs.
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Sat, 3 Dec 2016 05:23:59 +0000 (13:23 +0800)]
generic: make sure file size resource limit is honored by fs
If a file size limitation is set, underlying filesystem should not
break the limit and exceed the max file size.
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Tue, 13 Dec 2016 05:12:37 +0000 (07:12 +0200)]
overlay: test hardlink breakage on copy up
Introduce a new test to demonstrate a known issue with overlayfs:
- file A and B are hardlinked in lower
- modify A to trigger copy up
- file A is no longer a hardlink of file B
There is no fix for this issue at this time.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eric Biggers [Tue, 13 Dec 2016 06:57:01 +0000 (22:57 -0800)]
generic/062: don't assume same readdir order after re-creating directory
generic/062 uses getfattr to dump xattrs for a directory tree, then
deletes and recreates that directory tree, then dumps the xattrs
again and compares the dump to the original. This was failing when
run on ext4 with encryption enabled because getfattr's output is in
readdir order, but ext4 encryption by design chooses unpredictable
encrypted filenames for each new directory, causing the readdir
order to change after backup and restore. It is not really a valid
assumption that the readdir order will always be the same, so update
the test to sort the filenames, removing this assumption.
Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Mon, 12 Dec 2016 09:32:12 +0000 (11:32 +0200)]
overlay: associate tests to copyup group
Tests 016 and 013 both test behavior of concurrent
file access during copy up (truncate+exec and read+write).
Associate those tests to the copyup group.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Tue, 13 Dec 2016 06:18:29 +0000 (08:18 +0200)]
overlay: test unstable inode number
Introduce a new test to demonstrate a known issue with overlayfs:
- stat file A shows inode number X
- modify A to trigger copy up
- stat file A shows inode number Y != X
Also test if d_ino of readdir entries changes after copy up.
There is a POC patch by Miklos Szeredi that fixes this issue.
Not dealing with hardlinks here, because there is more to test
then stable inode number.
Hardlinks will get a test of their own.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Tue, 13 Dec 2016 06:15:29 +0000 (08:15 +0200)]
overlay/016: do not cd into $SCRATCH_MNT
Avoid cd into $SCRATCH_MNT
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Wang Xiaoguang [Wed, 2 Nov 2016 04:07:27 +0000 (12:07 +0800)]
generic: make 17[1-4] work well when btrfs compression is enabled
When enabling btrfs compression, original codes can not fill fs
correctly, here we introduce _fill_fs() in common/rc, which'll keep
creating and writing files until enospc error occurs. Note _fill_fs
is copied from tests/generic/256, but with some minor modifications.
Signed-off-by: Wang Xiaoguang <wangxg.fnst@cn.fujitsu.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Sun, 11 Dec 2016 21:53:22 +0000 (13:53 -0800)]
reflink: don't test disjoint block sharing sets
Unlike xfs/btrfs which store refcounting information as part of the
space metadata, ocfs2 implements block sharing (reflink) by creating
refcount btrees that are shared between subsets of files. Effectively,
this means that a ocfs2 can have multiple disjoint sets of files that
share blocks, which also means that blocks cannot be reflinked between
two disjoint refcounted-file-sets. generic/119 tests the ability to do
this, so we cannot run it for ocfs2. Create a _require helper to check
for this.
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>
Amir Goldstein [Fri, 9 Dec 2016 08:50:46 +0000 (10:50 +0200)]
check: fix excluding test groups
The -x flag is used to exclude tests that belong to
certain groups from the test args list.
When the test args list is expressed as a match pattern,
-x fails to exclude the tests that match the pattern
and belong to excluded groups.
For example:
$ ./check -n xfs/??? | wc -l
341
$ ./check -n -x fuzzers,dangerous_fuzzers xfs/??? | wc -l
341
After the fix:
$ ./check -n -x fuzzers,dangerous_fuzzers xfs/??? | wc -l
315
This bug seems to date back to this git repo epoc.
The fix also sorts out filtering of test that are not found
in group files for the patten match input.
For example:
$ ./check xfs/001*
...
xfs/001 2s
xfs/001.out [failed, exit status 127] - no qualified output
After the fix:
$ ./check -n xfs/001*
xfs/001.out - unknown test, ignored
...
xfs/001 2s
[eguan: use grep -q and fix if-then-fi style]
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Thu, 8 Dec 2016 10:52:21 +0000 (12:52 +0200)]
overlay/016: use xfs_io -C for executing commands
This test requires a fix to xfs_io to support
-C one shot commands and -c "open foo" command.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Thu, 8 Dec 2016 10:52:20 +0000 (12:52 +0200)]
common: implement _require_xfs_io_command "open"
-c "open $f" is broken in xfs_io <= 4.8. Using it results
in an endless loop and xfs_io exists with error EMFILE.
A fix for that bug makes "open" a 'one shot' command.
Along with this fix, a new -C flag was introduced to explicitly
request to execute a one shot command.
Check for -C flag support as an indication that -c "open $f"
is not broken.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Qu Wenruo [Fri, 9 Dec 2016 01:19:59 +0000 (09:19 +0800)]
btrfs: Use _require_btrfs_qgroup_report to replace open code
Introduce new _require_btrfs_qgroup_report function, which will
check the accessibility to "btrfs check --qgroup-report", then set a
global flag to info _check_scratch_fs() to do extra qgroup check.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Qu Wenruo [Thu, 8 Dec 2016 08:12:12 +0000 (16:12 +0800)]
common/btrfs: rename and enhance _require_btrfs to _require_btrfs_command
Rename _require_btrfs() to _require_btrfs_command() to avoid
confusion, as all other _require_btrfs_* has a quite clear suffix,
like _require_btrfs_mkfs_feature() or _require_btrfs_fs_feature().
Also enhance _require_btrfs_command() to accept 2nd level commands
or options.
Options will be determined by the first "-" char. This is quite
useful for case like "btrfs inspect-internal dump-tree" and "btrfs
check --qgroup-report".
[eguan: make local vars in _require_btrfs_command "local"]
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Ross Zwisler [Wed, 7 Dec 2016 04:04:01 +0000 (21:04 -0700)]
build: fix build warnings and notify_others() bug
This patch addresses the following build warnings:
fsx.c: In function 'do_punch_hole':
fsx.c:940:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
if (!quiet && testcalls > simulatedopcount)
^~
fsx.c:942:4: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if'
log4(OP_PUNCH_HOLE, offset, length, FL_SKIPPED);
^~~~
fsx.c:947:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
if (!quiet && testcalls > simulatedopcount)
^~
fsx.c:949:4: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if'
log4(OP_PUNCH_HOLE, offset, length, FL_SKIPPED);
^~~~
fsx.c: In function 'do_zero_range':
fsx.c:995:3: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
if (!quiet && testcalls > simulatedopcount)
^~
fsx.c:997:4: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if'
log4(OP_ZERO_RANGE, offset, length, FL_SKIPPED |
^~~~
[CC] growfiles
growfiles.c: In function 'notify_others':
growfiles.c:1458:6: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
if ( Forker_pids[ind] != Pid )
^~
growfiles.c:1462:10: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if'
kill(Forker_pids[ind], SIGUSR2);
^~~~
The warnings in fsx.c were just spacing issues of the form:
if (length == 0) {
if (!quiet && testcalls > simulatedopcount)
prt("skipping zero length punch hole\n");
log4(OP_PUNCH_HOLE, offset, length, FL_SKIPPED);
return;
}
Where the log4() call just needs to be unindented. log4() calls
elsewhere in that same file are not protected with any sort of
'quiet' check, and commonly follow prt() calls which are. See
doread(), domapread(), etc.
The warning from growfiles.c was actually a bug. notify_others() is
looping through the Forker_pids[] array and sending SIGUSR2 to all
other processes. However, with the current logic it only *logs* the
kill for other processes, and kills all other processes plus the
Forker_pids[] entry that matches 'Pid'.
Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Cc: Dave Chinner <david@fromorbit.com>
Cc: Lukas Czerner <lczerner@redhat.com>
Cc: Allison Henderson <achender@vnet.ibm.com>
Cc: Christoph Hellwig <hch@lst.de>
Cc: Nathan Scott <nathans@sgi.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Omar Sandoval [Tue, 6 Dec 2016 01:01:28 +0000 (17:01 -0800)]
generic/35[67]: disable swapfile tests on Btrfs
Btrfs doesn't support swapfiles (yet?), so generic/356 fails
erroneously, and generic/357 only passes by accident. Let's add a
_require_scratch_swapfile helper and add it to these tests.
Signed-off-by: Omar Sandoval <osandov@fb.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eric Biggers [Wed, 30 Nov 2016 22:31:42 +0000 (14:31 -0800)]
build: allow building with latest xfslibs on 32-bit Linux
The next version of xfslibs will require that its users enable
transparent largefile support. This broke building xfstests on
32-bit Linux because _FILE_OFFSET_BITS=64 was not getting defined
when testing for xfs headers. Fix this by defining
_FILE_OFFSET_BITS=64 when doing configure checks for the xfs
headers.
It was not necessary to define _FILE_OFFSET_BITS=64 for the actual
build because it's already done, in builddefs.in.
The problem could also be solved by adding AC_SYS_LARGEFILE to
configure.ac. It's debatable, but I chose not to do that because it
might give the impression that it affects the actual compilation of
the test programs and not just the configure checks. (Since not all
.c files include config.h first, a _FILE_OFFSET_BITS definition in
config.h wouldn't always take effect.)
Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Dave Chinner [Tue, 29 Nov 2016 21:32:33 +0000 (08:32 +1100)]
common: split Btrfs functions from common/rc
Similar to common/xfs, for the same reasons.
Signed-Off-By: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Dave Chinner [Tue, 29 Nov 2016 21:32:32 +0000 (08:32 +1100)]
common: split XFS functions from common/rc
common/rc has become a dumping ground for common functions that
don't have a specific topic file. It's getting huge and difficiult
to manage, and people are duplicating functionality because they
can't easily find existing functions in the mess.
Let's start to make it a little easier to manage by splitting out
the XFS specific functions into common/xfs and source that from
common/rc automatically. Other filesytems can follow suit in
future, leaving us with only generic functionality in common/rc.
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>
Dave Chinner [Wed, 30 Nov 2016 04:59:08 +0000 (15:59 +1100)]
generic/095: add iomap_dio_rw() to the dmesg filter
Oops, we did it again - we moved the XFS dio code warning to a new
function with the iomap direct IO rework. Update the filter to pick
up the new warning location.
Signed-Off-By: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Dave Chinner [Tue, 29 Nov 2016 02:48:09 +0000 (13:48 +1100)]
check: add brief result summaries
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>
J. Bruce Fields [Sat, 26 Nov 2016 01:39:39 +0000 (20:39 -0500)]
src/dirstress: Allow ESTALE as well as ENOENT
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>
J. Bruce Fields [Sat, 26 Nov 2016 01:39:01 +0000 (20:39 -0500)]
README: Document fstests mailing list
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Jan Kara [Tue, 22 Nov 2016 10:16:35 +0000 (11:16 +0100)]
ext4/001: Fixup file layout with DAX
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>
Amir Goldstein [Thu, 24 Nov 2016 20:12:12 +0000 (22:12 +0200)]
overlay: test ro/rw fd data inconsistecies
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>
Filipe Manana [Thu, 24 Nov 2016 06:25:19 +0000 (06:25 +0000)]
btrfs/124-5: add missing umount for raid5 tests
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>
Darrick J. Wong [Thu, 24 Nov 2016 01:51:15 +0000 (17:51 -0800)]
generic/182: retain existing btrfs behavior when len == 0
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>
Jaegeuk Kim [Fri, 18 Nov 2016 19:36:51 +0000 (11:36 -0800)]
generic: check some inline truncation behaviors
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>
Jaegeuk Kim [Mon, 21 Nov 2016 20:02:49 +0000 (12:02 -0800)]
generic: check inode metadata on f{data}sync after power-cut
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>
Qu Wenruo [Thu, 17 Nov 2016 02:06:48 +0000 (10:06 +0800)]
fstests: Introduce check for explicit SHARED extent flag reporting
For fs support reflink, some of them (OK, btrfs again) doesn't split
SHARED flag for extent fiemap reporting.
For example:
0 4K 8K
/ File1: Extent 0 \
/ \
|<- On disk Extent-->|
| /
| File2 /
Extent: 0
Fs supports explicit SHARED extent reporting should report fiemap like:
File1: 2 extents
Extent 0-4K: SHARED
Extent 4-8K:
File2: 1 extents
Extent 0-4K: SHARED
Fs doesn't support explicit reporting will report fiemap like:
File1: 1 extent
Extent 0-8K: SHARED
File2: 1 extent
Extent 0-4K: SHARED
Test case like generic/372 require explicit reporting will cause
false alert on btrfs.
Add such runtime check for that requirememt.
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Omar Sandoval [Thu, 17 Nov 2016 00:29:34 +0000 (16:29 -0800)]
generic: concurrent non-overlapping direct I/O on the same extents
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>
Liu Bo [Wed, 16 Nov 2016 19:17:03 +0000 (11:17 -0800)]
generic/098: update test for truncating a file into the middle of a hole
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>
Omar Sandoval [Wed, 16 Nov 2016 00:34:01 +0000 (16:34 -0800)]
xfs/298: cd to / instead of ~
In our kernel testing infrastructure, "$HOME" isn't defined.
Everywhere else in xfstests does `cd /` instead, so let's just do
that.
Signed-off-by: Omar Sandoval <osandov@fb.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Sat, 12 Nov 2016 18:12:33 +0000 (02:12 +0800)]
generic: fix $tmp path in tests
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>
Eryu Guan [Sat, 12 Nov 2016 17:22:26 +0000 (01:22 +0800)]
generic/38[3-6]: require project quota to be enabled on SCRATCH_DEV
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>
Amir Goldstein [Sun, 13 Nov 2016 13:49:37 +0000 (15:49 +0200)]
generic/37[3-4]: use bind mount instead of 2nd _scratch_mount
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>
Christoph Hellwig [Sat, 12 Nov 2016 16:48:49 +0000 (08:48 -0800)]
fstests: fix fsx fallocate error messages
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>
Eric Sandeen [Sat, 5 Nov 2016 02:00:09 +0000 (21:00 -0500)]
xfs: testcase for kernelspace xfs_fsr extent handling flaw
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>
Eryu Guan [Fri, 4 Nov 2016 16:16:10 +0000 (00:16 +0800)]
xfs/021: filter out detailed array element info from xfs_db
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>
Darrick J. Wong [Wed, 9 Nov 2016 23:00:17 +0000 (15:00 -0800)]
fstests: fix some minor problems testing ocfs2
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>
Qu Wenruo [Thu, 10 Nov 2016 03:18:48 +0000 (11:18 +0800)]
btrfs: Check false ENOSPC bug caused by incorrect metadata reserve
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>
Zorro Lang [Tue, 8 Nov 2016 05:33:50 +0000 (13:33 +0800)]
fstests: test xfs_copy V5 XFS without -d option
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>
Zorro Lang [Mon, 7 Nov 2016 06:30:12 +0000 (14:30 +0800)]
generic: multi-thread freeze/unfreeze test under fsstress
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>
Eryu Guan [Sun, 6 Nov 2016 17:43:33 +0000 (01:43 +0800)]
fstests: make xfs_io mandatory
_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
54659ecdb575 ("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>
Joao Eduardo Luis [Fri, 4 Nov 2016 10:04:39 +0000 (11:04 +0100)]
common: add CephFS support
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>
Dave Chinner [Wed, 2 Nov 2016 21:15:25 +0000 (08:15 +1100)]
filter: xfs_io output has dropped "64" from error messages
Upstream xfs_io has been converted to always use LFS compliant
(i.e. 64 bit) pwrite() rather than pwrite64(). Similar changes have
been made for multiple syscalls that have "*64" variants. hence the
error output of all these commands has changed, such as "pwrite64:
..." to "pwrite: ....".
Make a filter to catch the *64 variants and strip it, and
convert all the golden output to use the non-*64 variant. This will
make all golden output matching work correctly regardless of what
version of xfs_io is in use.
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>
Benjamin Coddington [Mon, 24 Oct 2016 13:52:41 +0000 (09:52 -0400)]
src/seek_sanity_test: discover allocation size
Try to discover the allocation size. For NFS, the st_blksize is
optimized for the network, and will usually be much larger than the
allocation size of the exported filesystem, which may trigger
preallocation strategies in the exported filesystem causing the seek
tests here to fail.
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Sat, 22 Oct 2016 05:27:33 +0000 (13:27 +0800)]
xfs/054: only filter ROOT_INO at the beginning
In the test ROOT_INO is filtered out and/or replaced, but if
ROOT_INO is also 32, more "32"s are filtered and replaced than
expected. This happens to me when testing 512B block size XFS and 1k
block size CRC enabled XFS.
Fix it by filtering out only ROOT_INO at the beginning of a line,
and removing all "g" modifiers in sed expressions.
Also the ROOT_INO should be the root inode number of TEST_DIR not
SCRATCH_MNT.
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eric Biggers [Fri, 21 Oct 2016 21:22:06 +0000 (14:22 -0700)]
generic/314: remove from acl group
generic/314 no longer tests POSIX ACLs. It only tests the SGID bit.
Therefore, it should not be in the acl group anymore.
Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Wed, 19 Oct 2016 08:52:33 +0000 (11:52 +0300)]
overlay/013: adjust test expectation to kernel v4.8
Commit
4d0c5ba (vfs: do get_write_access() on upper layer of overlayfs)
that was merged for kernel v4.8 changes the behavior of execve+truncate
in a subtle way.
When file is executed from lower and then truncated, the truncation is
allowed, becasue it only affects the size of the copied up file and does
not affect the VM mapping of the executed lower file.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Wed, 19 Oct 2016 08:52:32 +0000 (11:52 +0300)]
overlay/013: fix bug in test_upper creation
test_upper file was supposed to be in upper layer,
but it was wrongly created in lower layer.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Wed, 19 Oct 2016 08:52:31 +0000 (11:52 +0300)]
t_truncate_self: describe self better in error message
Include the name of the program that is trying to trucate itself
to error messages to distinguish between output for different
test cases (e.g. test_lower and test_upper in overlay/013).
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Andreas Gruenbacher [Wed, 19 Oct 2016 11:50:14 +0000 (13:50 +0200)]
generic: Check linking O_TMPFILE into namespace with POSIX ACLs
When an O_TMPFILE file is linked into a directory with a POSIX
default ACL, the file should inherit the default ACL and the umask
needs to be ignored.
[eguan introduced testdir var and added test to acl group]
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Xiao Yang [Wed, 19 Oct 2016 05:33:07 +0000 (13:33 +0800)]
xfs: remove the device parameter from __populate_check_xfs_dir
In commit
c08ebd092 ("xfs: fix $XFS_DB_PROG usage"), the need for
callers to pass the device to populate into
__populate_check_xfs_dir() was removed. So we can now clean up all
the callers by removing the device parameter.
Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Mon, 17 Oct 2016 22:09:34 +0000 (15:09 -0700)]
xfs: fix more xfs_db open-coding instances
Convert some more cases of 'xfs_db $SCRATCH_DEV' to _scratch_xfs_db
that were left out of the initial cleanup patch.
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>
Darrick J. Wong [Mon, 17 Oct 2016 22:09:28 +0000 (15:09 -0700)]
fstests: fix fallocate commands that need the unshare switch
We re-added the UNSHARE flag to fallocate, so go make sure that all
the unshare tests actually check that the installed copy of xfs_io
supports the 'funshare' command and that the underlying filesystem
understands the flag, and change the tests themselves to use
funshare.
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>
Darrick J. Wong [Mon, 17 Oct 2016 22:09:21 +0000 (15:09 -0700)]
xfs: set the refcount btree cowflag when setting up cow
When we're setting up a fake cow extent in the refcountbt to test
cleanup of fake cow extents, set the cowflag in the record field
to reflect our new disk format of storing the staging extents in
the right side of the tree.
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>
Amir Goldstein [Mon, 17 Oct 2016 07:31:41 +0000 (10:31 +0300)]
fstests: run xfs_io with -i option if supported
Try to run xfs_io with command line option -i, which starts an idle
thread before performing any io.
The purpose of this idle thread is to test io from a multi threaded
process. With single threaded process, the file table is not shared
and file structs are not reference counted.
In order to improve the chance of detecting file struct reference
leaks, we should run xfs_io commands with this option as much as
possible.
Analysis of the effect of xfs_io -i on tests runtime showed that it
may lead to slightly longer run times in extreme cases (e.g +3s for
generic/132), but has a negligible effect on runtime of tests among
the 'quick' group (worst case +0.3s for generic/130).
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Mon, 17 Oct 2016 07:23:33 +0000 (10:23 +0300)]
fstests: strip quotes from "$XFS_IO_PROG" call sites
The value of "$XFS_IO_PROG" may contain extra flags after the
binary path (e.g. -F), so it is wrong to use the variable inside
quotes in xfs_io execution call sites.
This bug surfaced while testing the new xfs_io -i flag.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Mon, 17 Oct 2016 07:23:32 +0000 (10:23 +0300)]
fstests: fix call sites that used xfs_io directly
Convert those few remaining call sites to use the XFS_IO_PROG env var.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Sat, 8 Oct 2016 08:40:24 +0000 (16:40 +0800)]
xfs/122: remove dead code
Seems this hunk of dead code is used for debug purpose to inspect
what the output looks like after _attribute_filter. Just remove it.
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eric Biggers [Wed, 12 Oct 2016 22:03:08 +0000 (15:03 -0700)]
generic/314: don't test SGID behavior after setfacl
Linux 4.9 (since commit
073931017b49: "posix_acl: Clear SGID bit
when setting file permissions") now may clear the SGID bit when
setting a POSIX ACL, to match chmod() behavior. This was making
generic/314 fail. Since SGID bit clearing on setfacl is already
tested by generic/375, just remove the problematic portion of
generic/314.
Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eric Biggers [Wed, 12 Oct 2016 22:03:07 +0000 (15:03 -0700)]
generic/375: test both regular file and directory
generic/375 previously only tested SGID being cleared on a regular
file. It should test SGID being cleared on a directory too. Though
this is not required by POSIX, it is the Linux behavior.
Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Zorro Lang [Tue, 11 Oct 2016 09:40:39 +0000 (17:40 +0800)]
common/rc: use real device name in _sysfs_dev function
_sysfs_dev try to find the major and minor device numbers of
SCRATCH_DEV, by 'stat -c%t $SCRATCH_DEV' and 'stat -c%T
$SCRATCH_DEV'.
But if the SCRATCH_DEV is symlink (e.g: /dev/mapper/
testvg-scratchdev), stat command can't find correct device numbers.
So try to find the real name of the SCRATCH_DEV at first.
Signed-off-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Sat, 8 Oct 2016 06:02:04 +0000 (14:02 +0800)]
xfs: renumber tests after merge
Tests were merged with high seq numbers to avoid conflicts with
other tests. Now renumber them to contiguous numbers, as all other
tests have been merged correctly. This is easier to do than
assigning the final seq numbers at commit time.
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Fri, 30 Sep 2016 02:24:02 +0000 (19:24 -0700)]
xfs: check copy-on-write fragmentation
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>
Darrick J. Wong [Fri, 30 Sep 2016 02:23:55 +0000 (19:23 -0700)]
xfs: test realtime rmapbt code
Test the realtime rmap btree code by exercising various IO patterns
on realtime files.
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>
Darrick J. Wong [Fri, 30 Sep 2016 02:23:47 +0000 (19:23 -0700)]
xfs: more rmapbt tests
More tests for the reverse mapping functionality.
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>
Eric Sandeen [Fri, 30 Sep 2016 02:32:25 +0000 (21:32 -0500)]
xfs: exercise and validate the xfs_io inode command
Run various modes of the xfs_io "inode" command.
This fails today, I have some patches to fix it up.
The "grep -q" for failures strings are fairly loose
because I'm changing them, and don't want to depend
on the exact error or usage message ...
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Fri, 30 Sep 2016 02:23:41 +0000 (19:23 -0700)]
xfs: fix $XFS_DB_PROG usage
xfs_db requires us to pass in the log device, if any; this can be
accomplished via _scratch_xfs_db_options (if we're operating on the
scratch device, anyway). However, many of the tests/xfs/ scripts
pass only $SCRATCH_DEV directly, so they'll fail if we test with an
external log. Fix that by adding a new _scratch_xfs_db helper.
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>
Darrick J. Wong [Fri, 30 Sep 2016 02:23:34 +0000 (19:23 -0700)]
fstests: use get_block_size helper
Don't open code grabbing the block size; just use the helper.
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>
David Disseldorp [Fri, 30 Sep 2016 11:52:18 +0000 (13:52 +0200)]
fsx: fix compiler warning due to bad prototype
I see the following with gcc 4.8.5 [-Wunprototyped-calls]:
warning: call to function 'cleanup' without a real prototype
Fix this by moving the function definition up, and dropping the
prototype.
Signed-off-by: David Disseldorp <ddiss@suse.de>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Zorro Lang [Fri, 30 Sep 2016 06:58:46 +0000 (14:58 +0800)]
xfs/032: test the next block size if mkfs fails
If test on a 512b sector size device, xfs/032 will try to do:
mkfs.xfs -s size=512 -b size=512 ...
The 512b block size is not acceptable for V5 XFS. So if mkfs.xfs
fails, try next block size (blksize *= 2) directly.
Signed-off-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Mon, 26 Sep 2016 11:13:05 +0000 (19:13 +0800)]
generic/349,350,351: remove from quick group
These tests are meant to test block devices, so they're not in auto
group. And quick group is a subset of auto group, so remove quick as
well.
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Tue, 27 Sep 2016 14:13:02 +0000 (22:13 +0800)]
xfs/287: fix wrong seq number in test
It's 287 not 285.
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Mon, 26 Sep 2016 08:44:42 +0000 (16:44 +0800)]
generic/052: use _check_scratch_fs not _xfs_check
generic/052 was made generic from an xfs test, and generic functions
should be used not the xfs-specific ones.
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Thu, 29 Sep 2016 02:28:40 +0000 (19:28 -0700)]
xfs/207,327: fsxattr no longer has the reflink flag
The FS_XFLAG_REFLINK flag was removed from struct fsxattr prior to
the inclusion of reflink in XFS, so remove it from the test outputs.
Note that the inode flag still exists; it's simply not presented
to userspace any more.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Thu, 29 Sep 2016 02:28:34 +0000 (19:28 -0700)]
xfs/130: don't modify files after failed mount
In xfs/130, we try to mount a filesystem with the expectation that it
will fail. Therefore, it is inappropriate to try to write to the
mountpoint, since it could otherwise be writable.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Thu, 29 Sep 2016 02:28:27 +0000 (19:28 -0700)]
xfs/122: decrease the log update done item sizes
Redundant fields were removed from the rmap/refcount/bmap update done
log items, so fix the size tests.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Brian Foster [Mon, 15 Aug 2016 12:56:26 +0000 (08:56 -0400)]
generic: shutdown fs after log recovery
XFS had a bug that lead to a possible out-of-order log recovery
situation (e.g., replay a stale modification from the log over more
recent metadata in destination buffer). This resulted in false
corruption reports during log recovery and thus mount failure.
This condition is caused by system crash or filesystem shutdown
shortly after a successful log recovery. Add a test to run a
combined workload, fs shutdown and log recovery loop known to
reproduce the problem on affected kernels.
Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Theodore Ts'o [Fri, 23 Sep 2016 20:05:20 +0000 (16:05 -0400)]
generic/361: require that file system uses a real block device
This test tries to use _mkfs_dev to format a loop device and then
tries to mount it. For file systems that don't use block devices
(nfs, tmpfs, etc.) this is doomed to failure. So skip this test if
$SCRATCH_DEV is not a block device.
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Fri, 23 Sep 2016 15:32:27 +0000 (23:32 +0800)]
generic/317: use id to get user id
Greping username "fsgqa" in passwd file to get user id doesn't
always work, because the given username could match multiple
entries, e.g. when we have user "123456-fsgqa" (used by other tests)
in passwd file.
Fix it by using "id -u $qa_user" to get the user id directly.
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Omar Sandoval [Thu, 22 Sep 2016 19:37:53 +0000 (12:37 -0700)]
btrfs: test free space tree mount options
The behavior of different combinations of space_cache mount options
wasn't well defined, which led to a regression between my initial
patches adding the free space tree and the 4.5 release. Add a test to
exercise all of the meaningful permutations of clear_cache,
nospace_cache, and space_cache.
This is a regression test for Linux kernel commit "Btrfs: fix mount -o
clear_cache,space_cache=v2".
Signed-off-by: Omar Sandoval <osandov@fb.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Wang Xiaoguang [Fri, 23 Sep 2016 03:12:07 +0000 (11:12 +0800)]
generic: truncate heavily reflinked file
In btrfs, there is a bug about btrfs' truncate codes, it'll leak
some fs space as the truncate operation proceeds. If this truncate
operation is very large, later metadata request in this truncate
operation may fail for enospc error. I also have sent a kernel
patch fot btrfs to fix this issue.
Signed-off-by: Wang Xiaoguang <wangxg.fnst@cn.fujitsu.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Fri, 23 Sep 2016 01:51:26 +0000 (09:51 +0800)]
fstests: move now-generic xfs project quota tests generic
Now that these tests have been made generic, move them into the
generic/ dir and update group files.
xfs/133 -> generic/383
xfs/134 -> generic/384
xfs/196 -> generic/385
xfs/262 -> generic/386
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eric Sandeen [Thu, 22 Sep 2016 22:51:03 +0000 (17:51 -0500)]
xfs: make some xfs project quota tests generic
This patch makes some xfs project quota tests generic,
so that there is at least some coverage on ext4 for this
(semi-)new feature.
It requires bleeding edge xfsprogs, so that xfs_quota and
xfs_io's chproj command can operate on "foreign" filesystems,
and requires relatively new e2fsprogs to enable the project
quota feature on-disk.
The mechanism for enabling project quota on ext4 is a bit
arcane, but hopefully I've encapsulated it reasonably well here.
Changes:
* look for "project" feature in _require_prjquota
* look for accounting not enforcement (-P) in _require_prjquota
* add a _scratch_enable_pquota to turn on project quota feature
* s/pquota/quota/ in _qmount_option for ext4
* add helper to test for xfs_io chproj on foreign filesystems
* switch from block to inode quota in xfs/133 because empty
ext4 dirs consume one block
* cosmetic/generic changes for mkfs, require tests, etc.
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eric Sandeen [Tue, 20 Sep 2016 22:24:59 +0000 (17:24 -0500)]
fstests: move now-generic quota tests to generic
Now that these tests have been made generic, move them into
the generic/ dir and update group files.
xfs/054 -> generic/379
xfs/118 -> generic/380
xfs/138 -> generic/381
xfs/260 -> generic/382
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eric Sandeen [Thu, 22 Sep 2016 18:54:16 +0000 (13:54 -0500)]
xfs: modify quota tests to work on generic filesystems
Fix several xfs quota tests to work on non-xfs filesystems.
New _require function to be sure that the xfs_quota tool can operate
on foreign filesystems; if it can, and if it needs to, it adds "-f"
to the XFS_QUOTA_PROG variable.
Modify _qmount to do quotacheck/quotaon to mount and /enable/
quota. On xfs this isn't needed and/or fails; it's ignored.
All quota-related options used as arguments to _qmount are changed
from i.e. uquota to i.e. usrquota; the latter is standard across
almost all linux filesytems, including xfs.
xfs/260 filters out the root/default quota line, because ext4
consumes a different amount of space than xfs, and it's not what
we're testing for, so just ignore it.
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Bill O'Donnell <billodo@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eric Sandeen [Tue, 20 Sep 2016 22:15:47 +0000 (17:15 -0500)]
xfs/260: fix output to match actions
The test creates 30 inodes, but says it created 300.
Just fix that up so the repquota output matches the
comments in the output file.
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Reviewed-by: Bill O'Donnell <billodo@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Thu, 22 Sep 2016 08:52:36 +0000 (16:52 +0800)]
fstests: require scratch dev in tests using dm targets
We build dm device on top of scratch dev so we require $SCRATCH_DEV
to be a valid block device in _require_dm_target(). And we need to
_require_scratch before _require_dm_target, otherwise test fails if
there's no SCRATCH_DEV defined, where it should _notrun.
+Usage: _require_block_device <dev>
So add _require_scratch_nocheck to generic/347 (we do the fs check
on thinp device), move _require_scratch before _require_dm_target in
xfs/006 and xfs/264.
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Xiao Yang [Tue, 20 Sep 2016 05:23:12 +0000 (13:23 +0800)]
common/rc: fix fsmap check
We don't need -T to detect GETFSMAP and the flag doesn't exist
on really old versions of xfs_io, so just get rid of it.
Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Zorro Lang [Wed, 14 Sep 2016 15:55:58 +0000 (23:55 +0800)]
xfs: various operations on mounted fs
xfsprogs takes use of ustat(2) to check if a given device is
mounted, but ustat(2) is deprecated and may not be available on
newer architectures, e.g. aarch64. In such cases, xfsprogs failed to
detect mounted device, which would result in something like
xfs_mdrestore overwriting a mounted XFS.
So adding a case to do xfs_mdrestore, xfs_copy, xfs_db, mkfs and
xfs_repair against mounted XFS to make sure they refuse to do so.
Signed-off-by: Zorro Lang <zlang@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Xiao Yang [Wed, 14 Sep 2016 02:52:36 +0000 (10:52 +0800)]
xfs/098: fix xfs_repair on newer xfsprogs
1) use _repair_scratch_fs instead of xfs_repair
The obsolete xfs_repair always cleared the log regardless of
whether it is corrupted and current xfs_repair only cleared the
log when -L option is specified. xfs_repair -L option should be
used to clear it if xfs_repair failed to clear log.
2) catch non-zero return value instead of 2
It can be applied to both the old return value 1 and the new
return value 2
3) add filter_xfs_dmesg to ignore mount related warnings
If we corrupt log and mount on a CONFIG_XFS_WARN build, there
will be mount related warnings in dmesg as expected.
Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Thu, 25 Aug 2016 08:16:12 +0000 (16:16 +0800)]
overlay: sgid inheritance over whiteout
Newly created files and dirs should inherit sgit bit from parent
dir, no matter the new files & dirs are created over whiteout or
not.
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Thu, 25 Aug 2016 23:29:30 +0000 (16:29 -0700)]
xfs: test getbmapx shared extent reporting
Test that getbmapx returns exact shared extents.
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>
Darrick J. Wong [Thu, 25 Aug 2016 23:29:24 +0000 (16:29 -0700)]
xfs: test getfsmap ioctl
Add some simple tests for the new getfsmap ioctl.
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>
Eryu Guan [Wed, 7 Sep 2016 09:57:15 +0000 (17:57 +0800)]
generic: simple permission check on hard links
Overlayfs had a bug that hardlinks don't share inode, if
chmod/chown/etc. is performed on one of the links then the inode
belonging to the other one won't be updated. The following patch
fixed this issue:
51f7e52 ovl: share inode for hard link
This is a simple test that has nothing overlayfs specific, so make
it a generic test.
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>