Josef Bacik [Mon, 24 Jun 2013 14:21:36 +0000 (10:21 -0400)]
xfstests: use xfs_io fiemap instead of filefrag V2
Btrfs has always failed shared/218 because of the way we allocate extents on
disk. The last part of 218 writes contiguously holey from the start of the file
forward, which for btrfs means we get 16 extents but they are physically
contigous. filefrag -v shows all 16 extents, but prints out that there is 1
extent, because they are physically contiguous. This isn't quite right and
makes the test fail. So instead of using filefrag use xfs_io -c fiemap which
will print the whole map and then get the count from there. With this patch
btrfs now passes the test, I also verified that ext4 and xfs still pass this
test. Thanks,
Signed-off-by: Josef Bacik <jbacik@fusionio.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Ben Myers <bpm@sgi.com>
Dave Kleikamp [Tue, 18 Jun 2013 22:57:00 +0000 (17:57 -0500)]
xfstests: aio-stress is calling pthread_join incorrectly
The retval parameter to pthread_join() is a pointer to a pointer.
aio-stress is passing in a pointer to an int. This can result in a bus
error on sparc64 when the pointer is not aligned on a 64-bit boundary.
Since the return value is not used, it is simplest to pass a NULL
pointer instead.
Josef Bacik [Wed, 12 Jun 2013 01:13:03 +0000 (21:13 -0400)]
xfstests: fsync-tester: fix pwrite() return check and disable direct for test 19
Test 19 in direct mode was failing on xfs because it was not actually doing the
write because the writes were not sectorsize aligned. This test is to test
btrfs's inline extent fsync()ing so the writes won't be sectorsize aligned, and
inline extents will fall back to buffered anyway so direct mode is meaningless
for this test. So just check if we are test 19 and disable direct mode so we
don't have to change the golden output. Also change test_five() to compare
against a ssize_t instead of a size_t since apparently comparing against size_t
makes it cast the return value of pwrite() to size_t which screws up the error
case, so instead of seeing the pwrite() error on xfs which would have explained
this all it appeared as if it was succeeding and screwing up the fsync(), which
unfortunately wasted a bit of Daves time. This patch should fix all this up.
Thanks,
Signed-off-by: Josef Bacik <jbacik@fusionio.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Ben Myers <bpm@sgi.com>
Dave Chinner [Fri, 7 Jun 2013 13:06:35 +0000 (23:06 +1000)]
xfstests: xfs/253 doesn't use seqres correctly
It was missed when converting all the tests as it was using
${seq}.full and none of the regexes matched it. Fix it up to direct
the output to the correct place.
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Ben Myers <bpm@sgi.com> Signed-off-by: Ben Myers <bpm@sgi.com>
Dave Chinner [Fri, 7 Jun 2013 13:06:33 +0000 (23:06 +1000)]
xfstests: generic/193 runs tests in wrong location
generic/193 runs the test in $here - the root of the xfstests source
tree/installation. IOWs, it doesn't test the filesystem on either
the TEST_DIR or SCRATCH_MNT, and so it not testing the filesystem
we think it is testing. Bad. Fixing this is the majority of the
change - introducing $test_root and $test_user for the files with
different owners, and then redirecting error output and filtering
the output appropriately.
And then add checks that truncate clears the suid/sgid bits
appropriately, something that has never been tested on XFS (and
likely other filesystems) so will cause kernels between 3.1 and 3.9
to assert fail as Dave Jones has recently reported.
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Ben Myers <bpm@sgi.com> Signed-off-by: Ben Myers <bpm@sgi.com>
Jan Kara [Mon, 3 Jun 2013 18:40:36 +0000 (13:40 -0500)]
xfstests 285: Fix test for ext4 in some configurations
In some configurations (e.g. 1 KB block size), ext4 can decide it is
better to zero out several blocks rather than splitting unwritten
extent. This changes results SEEK_HOLE / SEEK_DATA returns and thus the
test fails. Fix the problem by disabling the feature for this test.
Signed-off-by: Jan Kara <jack@suse.cz> Reviewed-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Eric Sandeen [Mon, 3 Jun 2013 12:28:17 +0000 (07:28 -0500)]
xfstests: fix seek_sanity_test for fs w/o fallocate
currently the seek_sanity_test (generic/285) fails on ext3
or ext2 due to fallocate() failures. Just ignore that test
if the fs doesn't support fallocate.
Note: this patch was originally submitted by Zheng Liu.
http://oss.sgi.com/archives/xfs/2013-05/msg00534.html
Signed-off-by: Eric Sandeen <sandeen@redhat.com> Reviewed-by: Zheng Liu <gnehzuil.liu@gmail.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
So _require_seek_data_hole() doesn't see the
"Kernel does not support" string it's looking for,
and passes the check.
So rather than _notrun-ing the test, it proceeds to
fail with noisy errors.
Fix that, make a common usage() function, and check for
too many args as well.
Signed-off-by: Eric Sandeen <sandeen@redhat.com> Reviewed-by: Jie Liu <jeff.liu@oracle.com> Reviewed-by: Zheng Liu <wenqing.lz@taobao.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Since h_chksum field has gone away, we should cleanup the related codes
[CC] loggen
loggen.c: In function 'loggen_unmount':
loggen.c:137:9: error: 'xlog_rec_header_t' has no member named 'h_chksum'
loggen.c: In function 'loggen_empty':
loggen.c:205:9: error: 'xlog_rec_header_t' has no member named 'h_chksum'
Michael L. Semon [Wed, 22 May 2013 18:50:59 +0000 (13:50 -0500)]
xfstests: Change mount method for generic/258
Use the built-in _test_mount function from xfstests so it will use
the correct mount options for xfstests. The script used a simple
umount-and-mount sequence, which caused a test failure on an XFS
filesystem that used both realtime and external log devices.
Signed-off-by: Michael L. Semon <mlsemon35@gmail.com> Reviewed-by: Eric Sandeen <sandeen@rehat.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Thu, 16 May 2013 11:52:05 +0000 (06:52 -0500)]
xfstests: quota not supported on realtime filesystems
Realtime XFS filesystems do not support quotas, so quota tests
always fail on such filesystems. Add a check to _require_quota to
detect this situation and notrun the quota tests...
Also, fix _require_xfs_quota and _require_prjquota to have the same
checks.
Eric Sandeen [Wed, 15 May 2013 12:18:07 +0000 (07:18 -0500)]
xfstests btrfs/284: shorten duration, fix output
test 284 had... some issues.
First, it took so long nobody ran it; so shorten the extent
count by a factor of about 100.
Having fixed that, we see failures in 2 cases; when start or
len is -1, but the golden output file didn't have error
output, as if they should pass.
I'm going to argue that these *should* both fail; start = -1
has no real meaning. length = -1 might mean "the rest
of the file" but if that's what you really want, just
don't specify -l.
So add failure output for those cases.
Send all command output to $seq.full, in case that changes
in the future; just capture the return value.
Then remove the return value echo on failure (50?) because
who knows when that might change to some other magic value.
Ok, then when defrag actually works, old defrag returned
"20" (because?) but a recent commit changed it to 0.
So accommodate that too.
And remove a stray "HAVE_DEFRAG=1" while we're at it.
That variable is never used.
Signed-off-by: Eric Sandeen <sandeen@redhat.com> Reviewed-by: Josef Bacik <jbacik@fusionio.com> Reviewed-by: Liu Bo <bo.li.liu@oracle.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Zheng Liu [Tue, 14 May 2013 18:25:44 +0000 (13:25 -0500)]
In xfstest 285/286 we don't check whether the target file system
supports seek data/hole operation or not. Here _require_seek_data_hole
is defined to do this work.
Eric Sandeen [Tue, 14 May 2013 18:08:45 +0000 (13:08 -0500)]
xfstests shared/298: various fixes
fix shared/298:
* don't include common/config, not needed and breaks
stuff when $SCRATCH_DEV_POOL is defined:
Error: $SCRATCH_DEV should be unset when $SCRATCH_DEV_POOL is set
* make sure xfs_io has fiemap, we'll need it
* add -F to the xfs_io invocation, again, for use on
old xfsprogs on non-xfs filesystems
* ignore ENOSPC errors from "garbage" loop; the only goal
is to fill it, ENOSPC doesn't matter.
Zheng Liu [Tue, 14 May 2013 13:35:44 +0000 (08:35 -0500)]
xfstests: remove fio config files after finished test
After finished test, temporarily fio config file should be removed.
This commit tries to fix this problem in the following test cases:
- generic/299-300
- ext4/301-304
- shared/305
Signed-off-by: Zheng Liu <wenqing.lz@taobao.com> Acked-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Rich Johnston <rjohnston@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Tue, 14 May 2013 13:34:44 +0000 (08:34 -0500)]
xfstests: fix incorrect redirect in generic/233
generic/233 attempts to direct output to tee, but instead of using a
pipe it uses an append operator. Hence it leaves a file named "tee"
in the root directory of the xfstests execution path. Just direct
the output to the $seqres.full file rather than trying to tee it
into the test output as well.
Reported-by: "Michael L. Semon" <mlsemon35@gmail.com> Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Eric Sandeen [Tue, 14 May 2013 13:33:44 +0000 (08:33 -0500)]
xfstests: automatically add -F to xfs_io on non-xfs
The -F flag to xfs_io originally enabled it to operate on non-xfs
filesystems. This restriction was removed upstream in favor of
gracefully failing on the handful of operations that actually
required xfs, and the option was deprecated.
However, xfstests is still used on distros with older xfsprogs, and
so "xfs_io -F" was necessary throughout xfstests.
Simplify this by appending -F to XFS_IO_PROG when it's needed -
i.e. if we're using old xfsprogs on a non-xfs filesystem.
This will eliminate errors when new tests leave out the -F, and
if and when -F is finally removed, there will be one central
location in xfstests to update.
Signed-off-by: Eric Sandeen <sandeen@redhat.com> Acked-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Rich Johnston <rjohnston@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Jan Kara [Tue, 14 May 2013 12:02:50 +0000 (07:02 -0500)]
Make test 306 use null and zero device nodes on SCRATCH_MNT
In one place of test 306, we mistakenly used /dev/null and /dev/zero
instead of equivalent devices created on tested filesystem. So we were
not really testing the functionality we intended.
Signed-off-by: Jan Kara <jack@suse.cz> Reviewed-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
--
Wang Sheng-Hui [Mon, 13 May 2013 20:41:21 +0000 (15:41 -0500)]
xfstests: update method to set TESTS_SUBDIRS in tests/Makefile.
make install support common/ and tests/ dirs (V4)
* reposted for current top of tree changes. [rjohnston@sgi.com]
* use the neater way by Dave to get the TESTS_SUBDIRS in tests/Makefile.
Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com>
[rjohnston@sgi.com Reposted for current top of tree changes] Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Jan Schmidt [Thu, 9 May 2013 19:40:00 +0000 (14:40 -0500)]
xfstests: add execution of a custom command to fsstress (-x and -X options)
This patch adds execution of a custom command in the middle of all fsstress
operations. Its intended use is the creation of snapshots in the middle of a
test run.
Josef Bacik [Fri, 26 Apr 2013 19:13:59 +0000 (19:13 +0000)]
xfstests 311: test fsync with dm flakey V4
This test sets up a dm flakey target and then runs my fsync tester I've been
using to verify btrfs's fsync() is working properly. It will create a dm flakey
device, mount it, run my test, make the flakey device start dropping writes, and
then unmount the fs. Then we mount it back up and make sure the md5sums match
and then run fsck on the device to make sure we got a consistent fs. I used the
output from a run on BTRFS since it's the only one that passes this test
properly. I verified each test manually to make sure they were in fact valid
files. XFS and Ext4 both fail this test in one way or another.
Signed-off-by: Josef Bacik <jbacik@fusionio.com> Acked-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Rich Johnston <rjohnston@sgi.com>
[rjohnston@sgi.com changed syncfs() to sync() for older kernels] Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Josef Bacik [Fri, 26 Apr 2013 19:13:59 +0000 (19:13 +0000)]
xfstests 311: test fsync with dm flakey V3
This test sets up a dm flakey target and then runs my fsync tester I've been
using to verify btrfs's fsync() is working properly. It will create a dm flakey
device, mount it, run my test, make the flakey device start dropping writes, and
then unmount the fs. Then we mount it back up and make sure the md5sums match
and then run fsck on the device to make sure we got a consistent fs. I used the
output from a run on BTRFS since it's the only one that passes this test
properly. I verified each test manually to make sure they were in fact valid
files. XFS and Ext4 both fail this test in one way or another.
Signed-off-by: Josef Bacik <jbacik@fusionio.com> Acked-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Rich Johnston <rjohnston@sgi.com>
[rjohnston@sgi.com changed syncfs() to sync() for older kernels] Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Wed, 1 May 2013 08:32:03 +0000 (08:32 +0000)]
xfstests: fix broken redirects in generic/131
generic/131 attempts to kill processes that may no longer exist when
the test finishes and has a broken redirect for the error messages
and they end up in a file named "1" in the xfstests root instead of
/dev/null.
Not only that, the attempts to redirect stderr to stdout in the
middle of the test use incorrect redirect syntax, so they create an
empty file named "1" in the xfstests root...
IOWs, all the redirects in the test are broken. Fix them and clean
up the failure case to use the exit trap to trigger the cleanup
function....
Dave Chinner [Wed, 1 May 2013 08:32:02 +0000 (08:32 +0000)]
xfstests: fix incorrect redirect in generic/232
generic/232 attempts to direct output to tee, but instead of using a
pipe it uses an append operator. Hence it leaves a file named "tee"
in the root directory of the xfstests execution path. Just direct
the output to the $seqres.full file rather than trying to tee it
into the test output as well.
Dave Chinner [Wed, 1 May 2013 08:32:01 +0000 (08:32 +0000)]
xfstests: filter EA paths used by dump
Test 063 fails because the diff output now has entire paths to the
files in the results directory in it rather than just the file name.
Add the results directory to the directory filter used by the dump
tests to remove the path from the diff output.
$TEST_DIR is persistent, so test directories need to be created with
"mkdir -p" so they don't fail if the directory already exists.
Many other things need fixing, too.
- Tests should define directories they use on $TEST_DIR by
their sequence number, not generic names.
- Use a variable for the directory the test runs in
($SEQ_DIR, in this case) to avoid having to manually code
it everywhere.
- New binaries need to be added to .gitignore.
- Return status for shell functions is 0 for success,
non-zero for failure.
- Setting status=0 if there is no failure in the first test
means that even if the second test fails, the test will
still pass. Change the test to use "_fatal" when a kernel
bug is detected, and only set status=0 when the entire
test has finished.
- reduce the default runtime by to roughly a minute and
scale it with the stress load factor variables. In most
cases, this test is never going to hit problems (as
they've already been fixed) so running it for ~4 minutes
is mostly a waste of time...
Dave Chinner [Wed, 1 May 2013 08:31:59 +0000 (08:31 +0000)]
xfstests: fix last test runtime output
Prior to the test directory split-up, xfstests used to output the
time it previously took to run a specific test in it's output. This
was broken during the split up, as test identifiers changed and the
result output changed.
To fix this, the search for previous test results needs to look at
the sequence number rather than the absolute sequence for the test.
The new output looks the same as the old functionality:
Where the first column is the time of the previous test run, and the
second column is the time that this run took.
Further, the check files used to generate this information are not
being output properly in the result directory, and so various log
files are not getting written to the correct location or file names.
For example, the calls to _check_test_fs would output failures to
".full", while other messages would be output to check.full, but
none would output to the corect location of RESULT_BASE/check.full.
Fix all this mess up so that all the check files for a specific run
end up in RESULT_BASE, and ensure the timing code checks the right
file and dumps output.
Josef Bacik [Fri, 26 Apr 2013 19:16:53 +0000 (19:16 +0000)]
xfstests: use -F when making scratch ext4 fs
mkfs.ext4 will ask you if you are sure if you try to mkfs an entire disk instead
of just a partition, so any xfstest that uses a scratch device and you specify a
full disk will appear to hang because it's waiting for you to say yes. This
fixes the problem by just forcing it to do its thing.
Signed-off-by: Josef Bacik <jbacik@fusionio.com> Reviewed-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Eric Sandeen [Sun, 21 Apr 2013 22:51:54 +0000 (22:51 +0000)]
xfstests: fix common filter include in filter.btrfs
Not sure how this happened, but filter.btrfs including
itself leads to immense sadness for any file that includes it.
(I got a segfault when I tried to run 307)
It should be including ./common/filter not ./common/filter.btrfs
Wang Sheng-Hui [Fri, 12 Apr 2013 04:26:53 +0000 (04:26 +0000)]
xfstests: make install support common/ and tests/ dirs
xfstests have some change on the organization of the testcases
and common* files:
* The common* scripts have been reorganized into the common/ dir.
* The testcases have been reorganized into sub test dirs under tests/.
* The run.* scripts have been removed.
This patch uses the simple way to make install support above changes:
Make up one Makefile for each newly created subdirs, which can control
'make install' separately.
v2 introduces the following changes compared with v1:
* Ignore the file 'group' under the top dir, for it's useless in the new
structures.
* Remove the redundant comments in the Makefiles.
* Use XXX_DIR instead of XXX_SUBDIR in the Makefiles under common/ and tests/.
* Export TESTS_DIR in teh top level Makefile instead of tests/Makefile.
* Obtain the names of dirs for testcases by iterating sub dirs under /tests,
not by enumeration in tests/Makefile.
Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com> Reviewed-by: Rich Johnston <rjohnston@sgi.com>
[rjohnston@sgi.com Minor modification to Makefile] Signed-off-by: Rich Johnston <rjohnston@sgi.com>
xfstests generic 310: check concurrently of readdir and read on the same directory fd
Check if there are two threads,one keeps calling read() or lseek(), and
the other calling readdir(), both on the same directory fd.
Based on a testcase from Li Zefan <lizefan@huawei.com>.
http://marc.info/?l=linux-kernel&m=136123703211869&w=2
Signed-off-by: Zhao Hongjiang <zhaohongjiang@huawei.com> Reviewed-by: Rich Johnston <rjohnston@sgi.com>
[rjohnston@sgi.com minor white space fixes and test renumbering] Signed-off-by: Rich Johnston <rjohnston@sgi.com>
xfstests generic 309: test dir mtime and ctime are updated on rename
Test directory mtime and ctime are updated when moving a file onto an
existing file in the directory
Regression test for commit: 0b23076 ext3: fix update of mtime and ctime on rename
Signed-off-by: Eryu Guan <eguan@redhat.com> Reviewed-by: Rich Johnston <rjohnston@sgi.com>
[rjohnston@sgi.com renumbered test to next in group sequence] Signed-off-by: Rich Johnston <rjohnston@sgi.com>
xfstests ext4 305: test read /proc/fs/ext4/<dev>/mb_groups while the fs is being unmounted
Regression test for commit: 9559996 ext4: remove mb_groups before tearing down the buddy_cache
Signed-off-by: Eryu Guan <eguan@redhat.com> Reviewed-by: Rich Johnston <rjohnston@sgi.com>
[rjohnston@sgi.com renumbered test to next in group sequence] Signed-off-by: Rich Johnston <rjohnston@sgi.com>
xfstests generic 308: test write to the last block of max file size on ext4
On unpatched ext4 if an extent exists which includes the block right
before the maximum file offset, and the block for the maximum file
offset is written, the kernel panics.
On patched ext4, the write would get EFBIG since we lower s_maxbytes
by one fs block.
Regression test for commit: f17722f ext4: Fix max file size and logical block counting of extent format file
Though it's an ext4 specific issue, it's no harm to run on all file
systems, so put it in generic.
Signed-off-by: Eryu Guan <eguan@redhat.com> Reviewed-by: Rich Johnston <rjohnston@sgi.com>
[rjohnston@sgi.com renumbered test to next in group sequence] Signed-off-by: Rich Johnston <rjohnston@sgi.com>
xfstests generic 307: check ctime updates for setfacl
Check if ctime is updated and written to disk after setfacl
Regression test for the following extN commits c6ac12a ext4: update ctime when changing the file's permission by setfacl 30e2bab ext3: update ctime when changing the file's permission by setfacl 523825b ext2: update ctime when changing the file's permission by setfacl
Signed-off-by: Eryu Guan <eguan@redhat.com> Reviewed-by: Rich Johnston <rjohnston@sgi.com>
[rjohnston@sgi.com renumbered test to next in group sequence] Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 12:28:09 +0000 (12:28 +0000)]
xfstests: use _notrun for tape checks
_require_tape is failing tests when no TAPE_DEV is specified. It
should be using _notrun for these cases rather than trying to open
code the $seqres.notrun magic file manipulations.
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 12:28:08 +0000 (12:28 +0000)]
xfstests: clean up test 262 output file use.
Test 262 uses ${} notation for some variables, and so is resistant
to grep and sed matches. Change it to use the same notation as the
rest of xfstests and fix up the output file redirections made in
previous patches.
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 12:28:07 +0000 (12:28 +0000)]
xfstests: Decomplicate quota setup in 050
Only test 050 uses the _qsetup function, and it only uses the ID
part of it in the test. The attempts to link output files is useless
as there are no different output files used by the test.
Hence kill the _qsetup function, and move the code into test 050,
simplifying it down to the minimum needed.
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 12:28:06 +0000 (12:28 +0000)]
xfstests: RESULTS_DIR needs to be an absolute path
Some tests 'cd <somedir>' and then direct output to $RESULT_DIR,
which fails if the current working directory is not $here.
Regardless, if an external results directory is to be used it needs
to have a full path specified and the use of $here as the base of
the results files is completely incorrect.
Hence change all the $here/$seqres* references to simply be
$seqres*, and instead encode the full path to the results in
$RESULT_DIR.
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 12:28:05 +0000 (12:28 +0000)]
xfstests: Reintroduce configurable test expunging.
It is definitely handy to be able to disabdle certain tests (e.g. tests that are
known to hang or crash the test machine on certain kernels), so re-introducing
the capability of avoiding certain tests just by placing them in a file is
useful.
Introduce a command line option to specify the expunged file name. The file will
exist in each tests/* sub-directory so that only the testname is required, and
can be managed independently. The use of a command line parameter allows
multiple expunge files to exist simultaneously in the one xfstests tree which
simplifies management of a source repository used for multiple versions of a
distro.
Dave Chinner [Fri, 15 Mar 2013 12:28:04 +0000 (12:28 +0000)]
xfstests: introduce a common directory
Introduce a top level common directory and move all the common.*
files into it. Because there is now a directory named common, the
prefix can be dropped from all the files. Convert all the tests to
use this new directory for including common files.
for f in common.*; do \
git mv `echo -n "$f " ; echo $f | sed -e 's;n\.;n/;'` \
done
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com>
[rjohnston@sgi.com reworked for TOT changes] Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 12:28:03 +0000 (12:28 +0000)]
xfstests: fix _link_out_file callers
Currently the callers pass $seq, rather than the full path to the
test. As a result, it creates the link in the top level directory
and it points nowhere. Fix it to create the link in the correct
place.
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 12:28:02 +0000 (12:28 +0000)]
xfstests: convert tests to use new results directory
Essentially the change is simply this. Converting:
... >> $seq.????
to:
.... >> $RESULT_DIR/$seq.????
so that output files are directed to the defined output directory.
sed to the rescue:
$ sed -i -e '/^seq=.*$/a seqres=$RESULT_DIR/$seq' -e 's/seq.full/seqres.full/' tests/*/*
will do most of the work automatically.
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com>
[rjohnston@sgi.com reworked for TOT changes] Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 12:28:01 +0000 (12:28 +0000)]
xfstests: Introduce a results directory
Currently each test gets it's sequence number from it's name. It
separates this from the path via basename, and uses it for
outputting full, notrun and other status/log files. Hence these end
up in the top level directory.
All these output files need to go somewhere other than the top level
directory. Right now the check script is looking for them in the new
test directories (e.g. for the notrun files), but it would be good
to be able to separate the test source form the test output.
Hence create an output directory which has a similar heirarchy to
the test source directory. Create it on demand when we build the
list of tests to run if it doesn't already exist.
Change the high level check script to set up this variable
appropriately for each test that is being run, and to use this new
output directory for it's result files as well. The next commit will
change all the tests themselves to use the new output directory.
This is the first (small) step in being able to store test results
in an external location for archival/data mining purposes.
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com>
[rjohnston@sgi.com rm whitespace and fix typos in commit message] Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 12:28:00 +0000 (12:28 +0000)]
xfstests: make exclude groups aware of multiple subdirectories
Now that there are no tests in the top level directory, the exlude
group functionality no longer works (-x group) as it cannot find
tests to build an initial list of tests. Rework the the exclude
group implementation to operate correctly on the new test locations.
Also, switch from sed to grep for exclusion because sed has problems
distnguishing the '/' in path names from regex control...
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 12:27:59 +0000 (12:27 +0000)]
xfstests: rework CLI individual test specification
Now that tests are in separate subdirectories, they cannot be selected purely by
test number on the command line. We need to specify the test by subdir and test
name, so effectively we move to specifying them by regexes on the command line
rather than by expanding a range internally. This is needed to support
non-numeric test names as well, so the change may as well be made here.
This means the command line parsing needs to change from trying to detect tests
by a regex match to a processing loop that simply parses the tests and checks
for there existence. Hence the moment we find an argument that is not a switch
(i.e no preceeding "-"), we move from the arg processing loop to the test name
processing loop. IOWs, tests must be specified last on the command line.
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 12:27:58 +0000 (12:27 +0000)]
xfstests: move remaining tests out of top level directory
These are tests that are shared between multiple filesystems (moved
to shared), and udf/btrfs/ext4 specific tests, moved to appropriate
directories.
I created the "shared" directory to indicate tests that are not
truly generic, but also not filesystem specific. They might rely on
a feature that is only implmented in a few filesystems and so can't
be truly generic.
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com>
[rjohnston@sgi.com reworked for TOT changes] Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com>
[rjohnston@sgi.com did not move test 032, belongs in shared] Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com>
[rjohnston@sgi.com added TOT changes] Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 12:27:54 +0000 (12:27 +0000)]
xfstests: include test subdirectory support
Create a specific tests/ subdirectory to hold all the tests so they
are no longer need to be in the top level directory. This patch does
not move any tests there, however, and that will be done in
subsequent commits.
The tests/ subdir will have it's own subdirectories for different
classes of tests. Initially, there will be a per-FSTYP subdirectory
for filesytsem specific tests, and a generic directory for tests
that span multiple filesystems.
Each class will have it's own group file to indicate what groups the
tests belong to, and these will be parsed appropriately by the high
level check script to build the test list.
The change in parsing results in the test output also emitting the
path to the test as well as the name of the test, instead of just a
raw number. This allows duplicate test names in the sudirecotries to
be unambiguous when the summary is written out.
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
This is arguably useful(*), but gets in the way of splitting up the
tests into multiple directories. Remove it for now, but such
functionality should be considered for re-implementation at a later
date.
(*) e.g. having a different "expunged" file for each distro release
you have to test to avoid the tests known to fail due to fixes or
features that will never be back ported to older releases....
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 12:27:51 +0000 (12:27 +0000)]
xfstests: kill hangcheck stuff from check
This is an old script from the auto-qa days back at SGI. It no
longer is in use or, AFAIK, ever been used for xfstests. If anyone
needs it, they can pull it back out of git, so lets remove it to
simplify check.
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 12:27:50 +0000 (12:27 +0000)]
xfstests: clean up and simply check CLI option parsing
The options are parsed in a messy loop of option parsing and
actions on secondary arguments. Turn it into something much neater
and easy to understand rather than a mess of temporary variables
and tortured logic...
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com>
[rjohnston@sgi.com fixed typos in commit message] Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 12:27:48 +0000 (12:27 +0000)]
xfstests: remove stale machine configs
Left over from the days of ASG, all stale. Remove them, leaving just
an simple example that defines all the variables that can be
configured. Also, add a localhost defined config set up for simple
KVM based guest test configs using virtio for their block devices to
simplify test setup in such scenarios..
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 12:27:47 +0000 (12:27 +0000)]
xfstests: kill useless test owner fields
Back many years ago, the owner field was used to email the test
owner when auto-qa failed that test. It is not needed anymore - if
you want to know who wrote the test, look it up in git....
Script used was:
$ sed -i -e "/^# creator/d" -e "/^owner/d" [0-3][0-9][0-9]
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com>
[rjohnston@sgi.com added TOT changes] Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 12:27:46 +0000 (12:27 +0000)]
xfstests: remove bench infrastructure
The benchmark framework inside xfstests is basically unused,
bitrotted and not very useful. If we need benchmarks, lets use a
real benchmark framework, not xfstests. Kill it to remove
dependencies on common and common.rc.
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Phil White <pwhite@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Jan Kara [Wed, 20 Mar 2013 10:50:48 +0000 (10:50 +0000)]
xfstests: count journal size in test 289
Test 289 ignored the fact that historically journal is not accounted as
fs overhead in ext3. For larger filesystems it is hidden in 1% tolerance
but for filesystems smaller than 12G the test fails. So make the
counting precise to work everywhere.
CC: Eric Sandeen <sandeen@sandeen.net> Signed-off-by: Jan Kara <jack@suse.cz> Reviewed-by: Eric Sandeen <sandeen@redhat.com>
[rjohnston@sgi.com: add lower case units to filter] Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Jan Schmidt [Tue, 19 Mar 2013 16:24:20 +0000 (16:24 +0000)]
xfstests: add background noise to test 276 (btrfs backref resolving)
The backref resolver test for btrfs was run on a static file system so far.
Resolving backrefs on a busy file system is what happens in reality and that
is what should be checked by this test.
I added a parameter such that the script can easily be changed to the former
behavior for development purposes.
Furthermore, this increases two constants which make the test simply cycle a
few seconds longer, increasing the chance to hit on something suspicious in
case we broke something.
Signed-off-by: Jan Schmidt <list.btrfs@jan-o-sch.net> Reviewed-by: Eric Sandeen <sandeen@redhat.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 11:53:31 +0000 (11:53 +0000)]
xfstests: correct quota file count for --large-fs
The files used to fill space when using --large-fs contribute
towards the quota of uid 0. Modify the quota output filter in test
050 to "hide" these files from the test output.
Dave Chinner [Fri, 15 Mar 2013 11:53:29 +0000 (11:53 +0000)]
xfstests: exclude largefs fill files from dump tests
The xfsdump/restore tests will see the space filling files and may
try to back them up and restore them, consuming huge amounts of time
to do (especially when diffing the results). Exclude the space
filling files by setting the no dump attributes on them and ensure
that xfsdump runs with the -e flag to exclude such files.
This also needs a dump filter addition to remove the output that
files were skipped, and to decrement the count of files processed by
xfsrestore because the inventory still includes excluded files.
Dave Chinner [Fri, 15 Mar 2013 11:53:27 +0000 (11:53 +0000)]
xfstests: enable large fs testing on ext4
Now that setting up large filesystem testing on sparse loopback
devices uses a generic method for filling the filesystem, extent
support to ext4 filesystems.
ext4 is slightly more complex to fill as it does not support files
larger than 16TB. Hence a slightly more complex method of using
multiple smaller files to fill the space is necessary.
WARNING: be prepared for ext4 to take forever to prepare large
filesystems as allocation of large amounts of space (especially as
it approaches ENOSPC) is can take minutes rather than milliseconds
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Rich Johnston <rjohnston@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 11:53:26 +0000 (11:53 +0000)]
xfstests: always use test option when checking large scratch device
Some tests call _check_scratch_device directly and when using a
large filesystem this needs to run with a -t option to avoid
consuming large amounts of memory. Make this happen in all cases
that the scratch device is checked.
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Rich Johnston <rjohnston@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>
Dave Chinner [Fri, 15 Mar 2013 11:53:25 +0000 (11:53 +0000)]
xfstest: enable xfs_repair for large filesystem testing
Now that large filesystem testing does not play free space games to
fill the space without IO, we can enable xfs_repair when running in
this mode. xfs_repair has had it's scalability problems solved, too,
so this is a safe thing to do.
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Rich Johnston <rjohnston@sgi.com> Signed-off-by: Rich Johnston <rjohnston@sgi.com>