xfstests-dev.git
10 years agoshared: new test to use up free inodes
Eryu Guan [Fri, 4 Apr 2014 06:17:33 +0000 (17:17 +1100)]
shared: new test to use up free inodes

Test fs by using up all inodes and check fs.

Also a regression test for xfsprogs commit
d586858 xfs_repair: fix sibling pointer tests in verify_dir2_path()

Signed-off-by: Eryu Guan <eguan@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agogeneric: add generic test for fallocate zero range
Lukas Czerner [Fri, 4 Apr 2014 06:17:21 +0000 (17:17 +1100)]
generic: add generic test for fallocate zero range

This is based on xfs/242. This is very similar to ext4/001 however this
test has some tweaks to make it work test zero range on generic file
system. This includes turning off ext4 extents zeroout and disabling
the test for xfs on systems where PAGE_SIZE > 4096.

It is testing extent tree manipulation with fallocate zero range
operation.

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: add test for btrfs send directory moves/renames
Filipe Manana [Fri, 4 Apr 2014 06:17:01 +0000 (17:17 +1100)]
btrfs: add test for btrfs send directory moves/renames

Regression test for a btrfs incremental send issue where the kernel failed
to build paths strings. This resulted either in sending a wrong path string
to the send stream or entering an infinite loop when building it.
This happened in the following scenarios:

1) A directory was made a child of another directory which has a lower inode
   number and has a pending move/rename operation or there's some non-direct
   ancestor directory with a higher inode number that was renamed/moved too.
   This made the incremental send code go into an infinite loop when building
   a path string;

2) A directory was made a child of another directory which has a higher inode
   number, but the new parent wasn't moved nor renamed. Instead some other
   ancestor higher in the hierarchy, with an higher inode number too, was
   moved/renamed too. This made the incremental send code go into an infinite
   loop when building a path string;

3) An orphan directory is created and at least one of its non-immediate
   descendent directories have a pending move/rename operation. This made
   an incremental send issue to the send stream an invalid path string that
   didn't account for the orphan ancestor directory.

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: add test for btrfs incremental send
Filipe David Borba Manana [Fri, 4 Apr 2014 06:16:41 +0000 (17:16 +1100)]
btrfs: add test for btrfs incremental send

Regression test for a btrfs incremental send issue where invalid paths for
utimes, chown and chmod operations were sent to the send stream, causing
btrfs receive to fail.

If a directory had a move/rename operation delayed, and none of its parent
directories, except for the immediate one, had delayed move/rename operations,
after processing the directory's references, the incremental send code would
issue invalid paths for utimes, chown and chmod operations.

This issue is fixed by the following linux kernel btrfs patch:

    Btrfs: fix send issuing outdated paths for utimes, chown and chmod

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: add test for btrfs send issuing premature rmdir operations
Filipe David Borba Manana [Fri, 4 Apr 2014 06:16:23 +0000 (17:16 +1100)]
btrfs: add test for btrfs send issuing premature rmdir operations

Regression test for btrfs incremental send issue where a rmdir instruction
is sent against an orphan directory inode which is not empty yet, causing
btrfs receive to fail when it attempts to remove the directory.

This issue is fixed by the following linux kernel btrfs patch:

    Btrfs: fix send attempting to rmdir non-empty directories

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agogeneric: add a basic O_TMPFILE test
Christoph Hellwig [Fri, 4 Apr 2014 06:15:56 +0000 (17:15 +1100)]
generic: add a basic O_TMPFILE test

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agocommon: add flink support to _require_xfs_io_command
Christoph Hellwig [Fri, 4 Apr 2014 06:15:51 +0000 (17:15 +1100)]
common: add flink support to _require_xfs_io_command

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfs/300: fix golden output
Eric Sandeen [Thu, 13 Mar 2014 04:20:54 +0000 (15:20 +1100)]
xfs/300: fix golden output

This test was written before a solution was in place, I think,
and so the expected output wasn't well tested.

The test does a loop of sparse writes from 6 to 0, but the
.out file expects 6 (not 7) extents.  Fix it.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agogeneric/280: use waidpid instead of ugly sleep
Dmitry Monakhov [Thu, 13 Mar 2014 04:20:28 +0000 (15:20 +1100)]
generic/280: use waidpid instead of ugly sleep

Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoshared/051: add filter to match the golden output for large acls
Jie Liu [Thu, 13 Mar 2014 04:20:18 +0000 (15:20 +1100)]
shared/051: add filter to match the golden output for large acls

On old kernel we return EINVAL if hit the limits of maximum number of
ACLs but return E2BIG on new kernel, which cause the test failes on new
kernel as the output is mismatch to the goldens. This patch fix it by
updating the golden output with the new error message and replacing the
old error message with it via a filter.

Signed-off-by: Jie Liu <jeff.liu@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: add basic functional test for btrfs quota groups
Wang Shilong [Thu, 13 Mar 2014 04:20:09 +0000 (15:20 +1100)]
btrfs: add basic functional test for btrfs quota groups

Add missing test for btrfs quota groups feature,test idea is to create
a parent qgroup that groups some subvolume groups, we try to write
some data into every subvolume and then check if we exceed parent
qgroup's limit size.

Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoext4/001: Add ext4 specific test for fallocate zero range
Lukas Czerner [Thu, 13 Mar 2014 04:20:00 +0000 (15:20 +1100)]
ext4/001: Add ext4 specific test for fallocate zero range

This is based on xfs/242. However it's better to make it file system
specific because the range can be zeroes either directly by writing
zeroes, or converting to unwritten extent, so the actual result might
differ from file system to file system. Also xfs results differ
depending on the page size which is not the case for ext4.

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agofsx: Add fallocate zero range operation
Lukas Czerner [Thu, 13 Mar 2014 04:19:58 +0000 (15:19 +1100)]
fsx: Add fallocate zero range operation

This commit adds fallocate FALLOC_FL_ZERO_RANGE support for fsx.

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agofsstress: translate flags in fiemap_f
Lukas Czerner [Thu, 13 Mar 2014 04:19:56 +0000 (15:19 +1100)]
fsstress: translate flags in fiemap_f

Translate flags in fiemap_f output to human readable strings.

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agofsstress: Add fallocate zero range operation
Lukas Czerner [Thu, 13 Mar 2014 04:19:53 +0000 (15:19 +1100)]
fsstress: Add fallocate zero range operation

This commit adds fzero operation support for fsstress, which is meant to
exercise fallocate FALLOC_FL_ZERO_RANGE support.

Also reorganise the common fallocate code into a single do_fallocate()
function and use flags use the right mode.

Also in order to make more obvious which fallocate mode fsstress is
testing translate fallocate flags into human readable strings.

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobuild: Move fallocate include into global.h
Lukas Czerner [Thu, 13 Mar 2014 04:19:52 +0000 (15:19 +1100)]
build: Move fallocate include into global.h

Move the inclusion of falloc.h with all it's possible defines for the
fallocate mode into global.h header file so we do not have to include
and define it manually in every tool using fallocate.

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agogeneric/008: Add test for fallocate zero range at block boundary
Lukas Czerner [Thu, 13 Mar 2014 04:19:03 +0000 (15:19 +1100)]
generic/008: Add test for fallocate zero range at block boundary

Add test for fallocate zero range at block boundary. This is similar to
the test xfs/290 however this one is generic and we're testing different
block sizes as well - namely 1k, 2k, 4k and 64k. Note that we're not
creating file systems with given block size buy rather test all 4
options.

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agocommon: create _test_block_boundaries in common/punch
Lukas Czerner [Thu, 13 Mar 2014 04:18:56 +0000 (15:18 +1100)]
common: create _test_block_boundaries in common/punch

Create new function _test_block_boundaries() which is testing content of
the blocks after the operation such as zero, or punch hole. The test is
doing the operation around block boundaries to assure correct behaviour
of the operation on block unaligned ranges.

This has been based on test xfs/290 which has been changed to use this
new function. A small change to the output file was required.

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agocommon: Create single function for testing xfs_io commands
Lukas Czerner [Thu, 13 Mar 2014 04:18:56 +0000 (15:18 +1100)]
common: Create single function for testing xfs_io commands

Currently there are several function testing various xfs_io commands.
This commit creates _require_xfs_io_command() to test any xfs_command.

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoaio-dio: fix error msg in aio-dio-subblock-eof-read.c
Eric Sandeen [Thu, 13 Mar 2014 04:18:42 +0000 (15:18 +1100)]
aio-dio: fix error msg in aio-dio-subblock-eof-read.c

io_getevents returns the number of events; printing its
return as "bytes read" is ... wrong.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: add test for btrfs-progs restore feature
Filipe David Borba Manana [Thu, 13 Mar 2014 04:18:18 +0000 (15:18 +1100)]
btrfs: add test for btrfs-progs restore feature

This is a regression test to verify that the restore feature of btrfs-progs
is able to correctly recover files that have compressed extents, specially when
the respective file extent items have a non-zero data offset field.

This issue is fixed by the following btrfs-progs patch:

    Btrfs-progs: fix restore dealing with compressed extents

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agofsstress: add verifiable logging mode
Dmitry Monakhov [Thu, 13 Mar 2014 04:18:01 +0000 (15:18 +1100)]
fsstress: add verifiable logging mode

- It would be useful to have verifiable logging mode which will contain
  only deterministic information which allow to compare two logs files
  generated from two runs with same seed.
- Also add missed help for '-o logfile' option

Signed-off-by: Dmitry Monakhov <dmonakhov@openvz.org>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: cleanup tests 004, 007, 022 and 025
ZhangZhen [Thu, 13 Mar 2014 04:17:44 +0000 (15:17 +1100)]
btrfs: cleanup tests 004, 007, 022 and 025

As recently suggested by Dave Chinner, make use of the new function
named _run_btrfs_util_prog() to run the btrfs util program.
Filipe David Borba Manana have cleaned up  btrfs/030 and btrfs/034.
I have done the same for the rest ones.

Signed-off-by: Zhang Zhen <zhenzhang.zhang@huawei.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: add function _require_fssum()
Filipe David Borba Manana [Thu, 13 Mar 2014 04:17:44 +0000 (15:17 +1100)]
btrfs: add function _require_fssum()

To avoid repeating detection of fssum presence in many btrfs tests, as
suggested by Dave Chinner.

Also exported the variable "here" from the main control script, to avoid
repeating its declaration in every single testcase file. Also removed the
declaration of "here" from btrfs test cases that require the fssum program
only. Removing it from all other test cases will be a separate change.

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfs/167: need at least 10GB of scratch space to run
Dave Chinner [Thu, 13 Mar 2014 03:58:39 +0000 (14:58 +1100)]
xfs/167: need at least 10GB of scratch space to run

When running on a ramdisk, the fsstress background workload consumes
a GB of disk space every 5 seconds. This leads to the test failing
with ENOSPC because the test file cannot be created due otthe
background load cosuming it all. Hence don't run this test unless
the scratch device is large enough not to hit ENOSPC conditions.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfs/217: prevent enospc failures on small test devices
Dave Chinner [Thu, 13 Mar 2014 03:58:31 +0000 (14:58 +1100)]
xfs/217: prevent enospc failures on small test devices

I'm running xfstests against a ramdisk, so I'm limited in size of
the test and scratch devices. While there are large enough to hold a
filesystem image with a 2GB log, the way the log changes position in
an image file as the size of the filesystem increases means that the
aggregated disk space of xfs/217 is more than enough to run a 4GB
TEST_DEV out of space and hence fail the test.

To avoid this problem, punch out the image file between every mkfs
iteration so that it only consumes the space needed by each
individual mkfs tests, not an aggregation of them all.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agogeneric/003: ensure time changes between stat calls
Dave Chinner [Thu, 13 Mar 2014 03:58:24 +0000 (14:58 +1100)]
generic/003: ensure time changes between stat calls

On a fast device like a ramdisk, kernel time may not have changed
between a stat of a file and some operation on it immediately
afterwards. Hence there is no guarantee that an operation actually
changes the timestamps of a file immediately after it is stat'd.

Hence, ensure that the times will change by sleeping for a second
between the initial stat that reads the timestamps and the
operations that is supposed to modify them. This way we ensure that
the timestamp will change if the filesystem is correctly
implemented.

While there, fix the indenting to be 8 space tabs and correct the
header which is missing the bash shell declaration and the test
number identifier.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfs/189: noattr2 invalid for CRC enabled filesystems
Dave Chinner [Thu, 13 Mar 2014 03:58:16 +0000 (14:58 +1100)]
xfs/189: noattr2 invalid for CRC enabled filesystems

Version 5 filesystems always have attr2 format enabled, and it
cannot be turned off via the noattr2 mount option. As such, attempts
to mount with noattr2 will be rejected and this causes cascading
failures within the test.

Hence detect if we've created a CRC enabled filesystem, and if this
is the case _notrun the test.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfs/033: add golden output for CRC enabled filesystems
Dave Chinner [Thu, 13 Mar 2014 03:58:09 +0000 (14:58 +1100)]
xfs/033: add golden output for CRC enabled filesystems

CRC enabled filesystems emit different errors on corruption.
Specifically, inode corruption is picked up much earlier due to
verifier failures (e.g. incorrect inode identifier) and so
xfs_repair throws errors sufficiently different that filtering
cannot hide the differences. Hence simply add a new golden output
file and link it appropriately once we know what type of filesystem
we are testing.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoshared/005: Test multiple fallocate collapse
Namjae Jeon [Sun, 23 Feb 2014 23:16:24 +0000 (10:16 +1100)]
shared/005: Test multiple fallocate collapse

We execute collapse range multiple times on same file.  Each
collapse range call collapses a single alternate block.  After the
test execution, file will be left with 80 blocks and as much number
of extents.  We also check for file system consistency after the
completion.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Ashish Sangwan <a.sangwan@samsung.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoshared/004: Delayed allocation multi collapse
Namjae Jeon [Sun, 23 Feb 2014 23:11:26 +0000 (10:11 +1100)]
shared/004: Delayed allocation multi collapse

shared/004 tries to test various corner cases with delayed extents
and pre-existing holes for fcollapse range functionality over
different type of extents.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Ashish Sangwan <a.sangwan@samsung.com>
10 years agoshared/003: Multi collapse range tests
Namjae Jeon [Sun, 23 Feb 2014 23:11:04 +0000 (10:11 +1100)]
shared/003: Multi collapse range tests

shared/003 tries to test various corner cases with pre-existing holes
for fcollapse range functionality over different type of extents.

Signed-off-by: Namjae Jeon <linkinjeon@gmail.com>
Signed-off-by: Ashish Sangwan <a.sangwan@samsung.com>
10 years agoshared/002: Delayed allocation collapse range
Namjae Jeon [Sun, 23 Feb 2014 23:10:20 +0000 (10:10 +1100)]
shared/002: Delayed allocation collapse range

shared/002 tries to test various corner cases with delayed extents
for fcollapse range functionality over different type of extents.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Ashish Sangwan <a.sangwan@samsung.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoshared/001: Standard collapse range tests
Namjae Jeon [Sun, 23 Feb 2014 23:08:16 +0000 (10:08 +1100)]
shared/001: Standard collapse range tests

shared/001 tries to test various corner cases for fcollapse range
functionality over different type of extents.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Ashish Sangwan <a.sangwan@samsung.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agogeneric: test for atime-related mount options
Koen De Wit [Tue, 18 Feb 2014 21:26:56 +0000 (08:26 +1100)]
generic: test for atime-related mount options

Tests the noatime, relatime, strictatime and nodiratime mount
options.

There is an extra check for Btrfs to ensure that the access time is
never updated on read-only subvolumes. (Regression test for bug
fixed with commit 93fd63c2f001ca6797c6b15b696a484b165b4800)

Signed-off-by: Koen De Wit <koen.de.wit@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: cleanup tests btrfs/030 and btrfs/034
Filipe David Borba Manana [Tue, 18 Feb 2014 10:18:21 +0000 (21:18 +1100)]
btrfs: cleanup tests btrfs/030 and btrfs/034

As recently suggested by Dave Chinner, make use of the new function
named _run_btrfs_util_prog() to run the btrfs util program, and stop
using run_check for running xfs_io - instead filter xfs_io's output
and add it to the golden output.

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: add test for send issuing duplicated rmdir ops
Filipe David Borba Manana [Tue, 18 Feb 2014 10:18:21 +0000 (21:18 +1100)]
btrfs: add test for send issuing duplicated rmdir ops

Regression test for btrfs incremental send issue where an rmdir
instruction was sent multiple times for the same target directory.
The number of times depended on the number of hardlinks against
the same inode inside the target directory. That inode must have
had the highest number of all the inodes that were children of the
directory. This made the btrfs receive command fail immediately once
it received the second rmdir instruction.

This issue is fixed by the following linux kernel btrfs patch:

   Btrfs: send, don't send rmdir for same target multiple times

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: add test for incremental send after dir renames
Filipe David Borba Manana [Tue, 18 Feb 2014 10:18:21 +0000 (21:18 +1100)]
btrfs: add test for incremental send after dir renames

Regression test for a btrfs incremental send issue related to
renaming of directories. If at the time of the initial send we have
a directory that is a child of a directory with a higher inode
number, and then later after the initial full send we rename both
the child and parent directories, but without moving any of them, a
subsequent incremental send would produce a rename instruction for
the child directory that pointed to an invalid path.  This made the
btrfs receive operation fail.

This issue is fixed by the following linux kernel btrfs patch:

   Btrfs: incremental send, fix invalid path after dir rename

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: add regression test for incremental send
Filipe David Borba Manana [Tue, 18 Feb 2014 10:18:20 +0000 (21:18 +1100)]
btrfs: add regression test for incremental send

Test for a btrfs incremental send issue where we end up sending a
wrong section of data from a file extent if the corresponding file
extent is compressed and the respective file extent item has a non
zero data offset.

Fixed by the following linux kernel btrfs patch:

   Btrfs: use right clone root offset for compressed extents

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs/005: log test result to right path
Wang Shilong [Tue, 18 Feb 2014 10:18:20 +0000 (21:18 +1100)]
btrfs/005: log test result to right path

We should log test results to $seqres.full not $seq.full.

Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfs: ensure bad primary sb crc fails mount
Eric Sandeen [Tue, 18 Feb 2014 10:18:20 +0000 (21:18 +1100)]
xfs: ensure bad primary sb crc fails mount

the commit:
10e6e65 xfs: be more forgiving of a v4 secondary sb w/ junk in v5 fields
broke primary sb CRC validation, not erroring out the mount
if the crc was bad.

This tests that it's fixed, and properly fails the mount on
a bad crc.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfs: check that junk in V4 superblocks doesn't break growfs
Eric Sandeen [Tue, 18 Feb 2014 10:18:18 +0000 (21:18 +1100)]
xfs: check that junk in V4 superblocks doesn't break growfs

Test that we properly ignore old growfs-induced junk in the unused
portion of secondary V4 superblocks; at one point this would
trip up the verifiers, and cause a subsequent growfs to fail.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs/004: fix to make test really work
Wang Shilong [Tue, 18 Feb 2014 10:18:16 +0000 (21:18 +1100)]
btrfs/004: fix to make test really work

So I was wondering why test 004 could pass my previous wrong
kernel patch while it defenitely should not.

By some debugging, i found here perl script is wrong, we did not
filter out anything and this unit test did not work acutally.so
it came out we will never fail this test.

Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfs: test setting XFS BMBT fields in xfs_db
Mark Tinguely [Tue, 18 Feb 2014 10:18:16 +0000 (21:18 +1100)]
xfs: test setting XFS BMBT fields in xfs_db

Test the setting of the XFS BMBT fields via xfs_db. Runs through the
valid bit values for each field and tests an illegal value.

[dchinner: added _require_xfs_mkfs_crc and turned off crcs so that
the test doesn't just fail on CRC enabled test runs.]

[dchinner: added hex block values to check they don't get endian
swapped.]

Signed-off-by: Mark Tinguely <tinguely@sgi.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: add test for data corruption when using compression
Filipe David Borba Manana [Tue, 18 Feb 2014 07:04:00 +0000 (18:04 +1100)]
btrfs: add test for data corruption when using compression

Test for a btrfs data corruption when using compressed
files/extents.  Under certain cases, it was possible for reads to
return random data (content from a previously used page) instead of
zeroes. This also caused partial updates to those regions that were
supposed to be filled with zeroes to save random (and invalid) data
into the file extents.

This is fixed by the commit for the linux kernel titled:

   Btrfs: fix data corruption when reading/updating compressed extents
   (https://patchwork.kernel.org/patch/3610391/)

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: add a regression test for running snapshot and send concurrently
Wang Shilong [Tue, 18 Feb 2014 06:50:23 +0000 (17:50 +1100)]
btrfs: add a regression test for running snapshot and send concurrently

Btrfs would fail to send if snapshot run concurrently, this test is to make
sure we have fixed the bug.

Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: add new clone overwrite regression test
David Disseldorp [Tue, 18 Feb 2014 06:19:34 +0000 (17:19 +1100)]
btrfs: add new clone overwrite regression test

This test uses the newly added cloner binary to dispatch full file and
range specific clone (reflink) requests.

Signed-off-by: David Disseldorp <ddiss@suse.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agosrc/cloner: use btrfs/ioctl.h header if present
David Disseldorp [Tue, 18 Feb 2014 06:18:42 +0000 (17:18 +1100)]
src/cloner: use btrfs/ioctl.h header if present

Check for the btrfsprogs-devel ioctl.h header at configure time. Use it
in src/cloner if present, otherwise fall back to using the copied clone
ioctl definitions.

Signed-off-by: David Disseldorp <ddiss@suse.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: add small program for clone testing
David Disseldorp [Tue, 18 Feb 2014 06:18:15 +0000 (17:18 +1100)]
btrfs: add small program for clone testing

The cloner program is capable of cloning files using the BTRFS_IOC_CLONE
and BTRFS_IOC_CLONE_RANGE ioctls.

Signed-off-by: David Disseldorp <ddiss@suse.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfs/021: filter v5 filesystem metadata
Dave Chinner [Tue, 18 Feb 2014 06:16:34 +0000 (17:16 +1100)]
xfs/021: filter v5 filesystem metadata

The xfs_db output is different for v5 filesystem metadata, and so
the test fails due to golden image mismatches rather than an actual
test failure. Improve the filter to hide the differences between the
metadata format outputs.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfs/299: users can't modify root owned files
Dave Chinner [Tue, 18 Feb 2014 06:16:26 +0000 (17:16 +1100)]
xfs/299: users can't modify root owned files

xfs/299 has failed for me for a long time. In fact, looking at my
logs it has never passed on any of my test machines. IOWs, the
test that was committed was fundamentally broken.

The reason is that it tests project quotas before it tests user or
group quotas and so creates a bunch of files that are owned by root
or privileged users. It think tries to manipulate them as a user,
and, unsurprisingly, it fails to do so. This then causes the test to
throw an error.

The reason it has always failed is the error that is thrown
hardcodes a uid/gid into an error message. This uid/gid is what
causes the golden output mismatch (nobody is 65534 on my machines,
not 99):

     *** push past the hard block limit (expect EDQUOT)
     [ROOT] 0 0 0 00 [--------] 12 0 0 00 [--------] 0 0 0 00 [--------]
     [NAME] =OK= 100 500 00 [--------] 7 4 10 00 [7 days] 0 0 0 00 [--------]
    - URK 99: 0 is out of range! [425,500]
    + URK 65534: 0 is out of range! [425,500]

It wasn't until I looked at the xfs/299.full file when trying to
understand why the error was being thrown and whether it shoul dhave
been in the golden output in the first place that I saw the real
problem. That is, All the user/group quota modifications were
failing because of not having permissions to write the files left
behind by the quota test, and that user and group quotas were not
being tested at all by the test.

So, firstly $SCRATCH_MNT needs to be world writeable, and secondly
each test needs to remove the files it created during the test so
they don't impact on furture test iterations.

This then exercises the user and group quotas appropriately, and so
the golden output changes completely to reflect that changes under
user quotas are actually being accounted to the correct user.
Further, the error message that I originally saw errors on goes
away, because everything is now accounted correctly.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfs/008: initialize "valid" bitmap in randholes.c
Eric Sandeen [Thu, 6 Feb 2014 05:43:17 +0000 (16:43 +1100)]
xfs/008: initialize "valid" bitmap in randholes.c

Failures were reported in xfs/008 on s390; dchinner suggested that
perhaps the uninitialized "valid" bitmap was behaving differently on
that platform, and sure enough, this patch fixes things up.

TBH, I'm not sure why using an uninitialized bitmap worked at
all, ever, anywhere...?

[ dchinner explains during review:

It depends on glibc behaviour to whether newly allocated memory is
zeroed or not. e.g. for large allocations glibc uses
mmap() to directly map anonymous pages for the allocation. These get
zeroed by the kernel before being mapped into the user address
space. If glibc allocates from the heap and needs to grow it, it
uses sbrk() to grow the heap and those pages are, again, zeroed by
the kernel. However, if the allocation comes from the heap from
previously freed memory, then it doesn't get zeroed.

I'd say that the 3rd case is occurring here - there's memory that is
allocated and freed as part of the program startup that the bitmap
is being allocated from, and so it's not newly zeroed pages that it
is being allocated from... ]

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfs/066: stat the test file, not the directory
Dave Chinner [Thu, 6 Feb 2014 05:36:17 +0000 (16:36 +1100)]
xfs/066: stat the test file, not the directory

Ever since commit 7e2a19504 ("ls -l reports different file size
depending on platform and user.") xfs/066 has been running stat on
the dump/restore directory instead of the large file that the test
is checking can be dumped and restored correctly. IOWs, it's not
been checking the correct thing for almost 10 years.

This test fails on CRC enabled filesystems because the shortform
directory entry size is different (an extra byte for the filetype
filed), and this is where tracking down the failure has lead me.

Fix this by using the correct target file, and improve it by dumping
an md5sum of the source and target files to ensure they contain the
same data.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfs/296: fix golden output
Dave Chinner [Thu, 6 Feb 2014 05:36:14 +0000 (16:36 +1100)]
xfs/296: fix golden output

This test never passed, so the golden output was never properly
verified as correct. Now that the bug is fixed, fix the golden
output to match the actual test output.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agogeneric: inconsistent initial state for test_generic_punch
Dave Chinner [Tue, 4 Feb 2014 00:52:37 +0000 (11:52 +1100)]
generic: inconsistent initial state for test_generic_punch

The first test may start with the file from the previous test, and
that is in an unknown state. Hence always remove the test file
before the first test so that it doesn't have extents inside the
test range as it is supposed to be testing into a hole.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agogeneric: _test_generic_punch not blocksize clean
Dave Chinner [Tue, 4 Feb 2014 00:52:26 +0000 (11:52 +1100)]
generic: _test_generic_punch not blocksize clean

Test 17 of _test_generic_punch uses the filesystem block size to do
a sub-single block punch. The result of this is a files of
different sizes and md5sums when the filesystem block size changes.
However the only difference in file contents if the length of the
file - the zeroed region is always in the same place. Hence we can
use hexdump rather than md5sum to check the output remains
consistent and the hole remains in the correct place despite the
changing block sizes.

Fix up all the golden output for all the tests that use this
function, too.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfs/291: fix spurious ENOSPC errors
Dave Chinner [Tue, 4 Feb 2014 00:52:17 +0000 (11:52 +1100)]
xfs/291: fix spurious ENOSPC errors

xfs/291 tries to fill the filesystem almost full, so if the log size
changes with mkfs defaults then it's free space calculations are not
longer valid and so it throws lots of ENOSPC errors during a run.
This is not fatal for this test, but it does increase the runtime of
it and fill the 291.full file with unnecessary errors.

The number of frag files it creates is also too many for a 512 byte
inode filesystem (by about 900) so reduce the number of inodes
initially created so the test works ofr 512 byte inodes. With 512
byte inodes, the free space histogram looks like this after the frag
phase:

   from      to extents  blocks    pct
      1       1   10730   10730 100.00

And for 256 byte inodes:

   from      to extents  blocks    pct
      1       1   12388   12388 100.00

So these changes do not affect the intended operation of the test.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfs/199: enforce v4 superblock format for test
Dave Chinner [Tue, 4 Feb 2014 00:52:03 +0000 (11:52 +1100)]
xfs/199: enforce v4 superblock format for test

This test relies of the contents of the sb_features2 field being
known. Make sure ot clear allt eh MKFS_OPTIONS and ensure that we
direct mkfs to create only the simplest of featuresets to test this
functionality.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfstests: add test for btrfs incremental send data corruption
Filipe David Borba Manana [Tue, 4 Feb 2014 00:51:08 +0000 (11:51 +1100)]
xfstests: add test for btrfs incremental send data corruption

Btrfs incremental send had an issue where it would detect a non-existent
file hole and then overwrite the file section that hole covers with zeroes,
overriding file data that it shouldn't.

The respective btrfs kernel patch that fixed this issue is titled:

   Btrfs: fix send file hole detection leading to data corruption
   (https://patchwork.kernel.org/patch/3544831/)

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs/030: add more test cases
Filipe David Borba Manana [Sun, 2 Feb 2014 23:06:50 +0000 (10:06 +1100)]
btrfs/030: add more test cases

This change adds some new tests for btrfs' incremental send feature.
These are all related with inverting the parent-child relationship
of directories, and cover the cases:

* when the new parent didn't get renamed (just moved)
* when a child file of the former parent gets renamed too

These new cases are fixed by the following btrfs linux kernel patches:

* "Btrfs: more send support for parent/child dir relationship inversion"
* "Btrfs: fix send dealing with file renames and directory moves"

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoext4/306: avoid failures caused by incompatible mount options
Eric Whitney [Sun, 2 Feb 2014 23:06:50 +0000 (10:06 +1100)]
ext4/306: avoid failures caused by incompatible mount options

ext4/306 will fail when mounting the ext3 file system it creates if an
ext3-incompatible mount option is applied by _scratch_mount.  This can
happen if EXT_MOUNT_OPTIONS is defined appropriately in the test
environment.  For example, the block_validity option is commonly used
to enhance ext4 testing, and it is not supported by ext3.

Fix this by instead creating an ext4 file system without extents as a
functionally equivalent substitute.  This will also eliminate a
dependency for ext3 support on the test system.

Signed-off-by: Eric Whitney <enwlinux@gmail.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agogeneric/299: truncate can fail with ENOSPC
Josef Bacik [Sun, 2 Feb 2014 23:06:50 +0000 (10:06 +1100)]
generic/299: truncate can fail with ENOSPC

So this test does lots of fallocate/truncate noise while doing aio
overwrites to try and exercise a deadlock found in ext4.  Because it
runs so hard with ENOSPC it can sometimes cause truncate to fail on
btrfs.  This is ok and doesn't affect the validity of the test, we
just need to catch the output so it doesn't cause the test to fail.
Thanks,

Signed-off-by: Josef Bacik <jbacik@fb.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agogeneric/313: initialise TEST_DIR before use
Brian Foster [Sun, 2 Feb 2014 23:06:42 +0000 (10:06 +1100)]
generic/313: initialise TEST_DIR before use

The 'testfile' environment variable is initialized before the
xfstests environment is included into generic/313. TEST_DIR is not
defined at this point and causes the test to operate on the root.
Move the testfile initialization down after the general environment
is sourced.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Jie Liu <jeff.liu@oracle.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs/029: filter mkfs and cp output
Josef Bacik [Sun, 2 Feb 2014 23:06:41 +0000 (10:06 +1100)]
btrfs/029: filter mkfs and cp output

I noticed while testing a different mkfs option that btrfs/029 was
failing because it was getting the extra output from our mkfs.btrfs.
After I fixed that I was still failing because my version of cp will
spit out the source and destination files, not just the destination
file.  So redirect _scratch_mkfs to /dev/null like everybody does
and make the golden output just expect to see "cp failed" instead of
the cp specific output.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fb.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfs: remove spurious line continuation from _require_xfs_crc
Brian Foster [Sun, 2 Feb 2014 23:06:23 +0000 (10:06 +1100)]
xfs: remove spurious line continuation from _require_xfs_crc

This causes the mkfs to fail and leads to tests being skipped.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Jie Liu <jeff.liu@oracle.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs/025: make test more robust
Filipe David Borba Manana [Sun, 2 Feb 2014 23:06:14 +0000 (10:06 +1100)]
btrfs/025: make test more robust

Make the test btrfs/025 not depend on the output of the btrfs tools
subvolume, send, receive and filesystem commands output. The output
of these commands has changed several times in the past, and it can
change again in the future. Therefore just test for failure/success
and not for the exact output on the success case.

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoBtrfs: add regression test for iterating backrefs
Wang Shilong [Sun, 2 Feb 2014 23:05:34 +0000 (10:05 +1100)]
Btrfs: add regression test for iterating backrefs

Btrfs send/scrub/defrag/qgroup need to walk backrefs,this test
is to make sure iterating backrefs with ulist is working and don't
cause a kernel panic here.

Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoBtrfs: add regression test for transaction abortion when remounting
Wang Shilong [Sun, 2 Feb 2014 22:50:41 +0000 (09:50 +1100)]
Btrfs: add regression test for transaction abortion when remounting

Btrfs would get a transaction abortion when remounting RW to RO with
flushoncommit enabled. This test is to check if bug still exists.

Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfstests: define $seqres in btrfs/026-029
Koen De Wit [Fri, 24 Jan 2014 01:06:45 +0000 (12:06 +1100)]
xfstests: define $seqres in btrfs/026-029

I forgot to define $seqres in btrfs/026-029. As a result, a file named
.full was created in the current working directory. Fix it.

Signed-off-by: Koen De Wit <koen.de.wit@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfstests: btrfs: cross-subvolume sparse copy
Koen De Wit [Fri, 24 Jan 2014 01:06:31 +0000 (12:06 +1100)]
xfstests: btrfs: cross-subvolume sparse copy

This testscript creates reflinks to files on different subvolumes,
overwrites the original files and reflinks, and moves reflinked files
between subvolumes.

Signed-off-by: Koen De Wit <koen.de.wit@oracle.com>
Reviewed-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfstests: clean command names in btrfs tests
David Sterba [Fri, 24 Jan 2014 01:06:14 +0000 (12:06 +1100)]
xfstests: clean command names in btrfs tests

- expand shortened command names
- use $BTRFS_UTIL_PROG instead of 'btrfs'
- fix test 024 header number

Signed-off-by: David Sterba <dsterba@suse.cz>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfstests: use value of FSTYP if defined externally
David Sterba [Fri, 24 Jan 2014 01:05:01 +0000 (12:05 +1100)]
xfstests: use value of FSTYP if defined externally

The initial value of FSTYP is unconditionally set to 'xfs' and the
filesystem type is taken from the TEST_DEV. This could lead to confusion
if the device hasn't been formatted yet, eg. an empty image in VM, or
a different test setup took place before.

Now one can specify the desired FSTYP in advance and be safe. If unset,
the fallback to TEST_DEV type continues to work.

Signed-off-by: David Sterba <dsterba@suse.cz>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfstests: don't suggest to run full diff when DIFF_LENGTH is 0
David Sterba [Fri, 24 Jan 2014 01:04:33 +0000 (12:04 +1100)]
xfstests: don't suggest to run full diff when DIFF_LENGTH is 0

If DIFF_LENGTH is set to 0, the full output is available and the message
does not make sense.

Signed-off-by: David Sterba <dsterba@suse.cz>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfstests: add test for btrfs incremental send infinite loop issue
Filipe David Borba Manana [Fri, 24 Jan 2014 01:04:18 +0000 (12:04 +1100)]
xfstests: add test for btrfs incremental send infinite loop issue

Regression test for btrfs' incremental send feature:

1) Create several nested directories;

2) Create a read only snapshot;

3) Change the parentship of some of the deepest directories in a reverse
   way, so that parents become children and children become parents;

4) Create another read only snapshot and use it for an incremental send
   relative to the first snapshot.

At step 4 btrfs' send entered an infinite loop, increasing the memory it
used while building path strings until a krealloc was unable to allocate
more memory, which caused a warning dump in dmesg.

The following linux kernel patch fixes this issue.

   Btrfs: fix infinite path build loops in incremental send
   (https://patchwork.kernel.org/patch/3522361/)

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agogeneric/204: use fixed log size for XFS
Dave Chinner [Mon, 20 Jan 2014 06:22:37 +0000 (06:22 +0000)]
generic/204: use fixed log size for XFS

In changing the default log sizes in mkfs, the freespace
calculations in generic/204 are no longer valid and so it fails with
ENOSPC before ti has finished creating the necessary files.. Make
the test use a fixed log size of 5MB for XFS so that freespace
calculations remain valid and the test passes regardless of whether
we have a new or old mkfs binary.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
10 years agoxfs/104: use fixed log size
Dave Chinner [Mon, 20 Jan 2014 06:22:36 +0000 (06:22 +0000)]
xfs/104: use fixed log size

In changing the default log sizes in mkfs, the freespace
calculations in xfs/104 are no longer valid and so it fails with
ENOSPC before running any of the growfs tests. Make the test use a
fixed log size of 5MB so that freespace calculations remain valid
and the test passes regardless of whether we have a new or old mkfs
binary.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
10 years agoxfs: support xfs_metadump with external logs
Dave Chinner [Mon, 20 Jan 2014 06:22:35 +0000 (06:22 +0000)]
xfs: support xfs_metadump with external logs

When running xfstests with an external log, the metadump tests fail
with extra output like:

    +filesystem is marked as having an external log; specify logdev on the mount command line.
    +xfs_metadump: cannot read superblock for ag 0

Add a _scratch_metadump() function to handle different logdev
configurations automatically for metadump.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
10 years agoxfs/073, 208: remove .full output before starting the test
Dave Chinner [Mon, 20 Jan 2014 06:22:34 +0000 (06:22 +0000)]
xfs/073, 208: remove .full output before starting the test

Otherwise we end up with an ever-growing file for every test that is
run and that makes it hard to isolate failures.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
10 years agoxfs: add fsstress/recovery test
Dave Chinner [Mon, 20 Jan 2014 06:22:33 +0000 (06:22 +0000)]
xfs: add fsstress/recovery test

This has found several issues with recovery on CRC based
filesystems. It is based on a test case for a dir3 assert failure
provided by Michael L Semon.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
10 years agoxfs: New _require_* tests for CRC enabled filesystems
Dave Chinner [Mon, 20 Jan 2014 06:22:32 +0000 (06:22 +0000)]
xfs: New _require_* tests for CRC enabled filesystems

CRCs always enabled 32 bit project inodes and attr2 formats, hence
they cannot be turned off. Add new require rules for the tests that
require attr and 16 bit project IDs so these tests are avoided on
CRC enabled filesystems.

Also, add a xfs_db write check so that we can avoid tests that are
dependent on xfs_db modifying filesystem structures as they will
fail on CRC enabled filessystems right now. This is just temporary
until full write xfs_db support is available.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
10 years agoxfs: test scratch device mkfs features
Dave Chinner [Mon, 20 Jan 2014 06:22:31 +0000 (06:22 +0000)]
xfs: test scratch device mkfs features

Some filesystem features are not compatible with certain tests, and
so we need to do require tests to determine if they are supported.
Some of these incompatibilities might be a result of optional mkfs
parameters specified in MKFS_OPTIONS. In this case, we don't want
scratch_mkfs_xfs stripping MKFS_OPTIONS and saying the feature is
supported when the next _scratch_mkfs command in the test will
result in a different mkfs command line.

Hence add a "mkfs supported" function to run a non-destructive mkfs
test to determine if the feature is supported by the current test's
mkfs configuration.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
10 years agoext4: regression test for ext4 resize with non-extent files
Eric Sandeen [Mon, 20 Jan 2014 07:09:27 +0000 (07:09 +0000)]
ext4: regression test for ext4 resize with non-extent files

Regression test for:

c5c72d8 ext4: fix online resizing for ext3-compat file systems

Signed-off-by: Eric Sandeen <esandeen@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Reviewed-by: Rich Johnston <rjohnston@sgi.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
10 years agobtrfs: sparse copy between different filesystems/mountpoints
Koen De Wit [Mon, 20 Jan 2014 02:56:37 +0000 (13:56 +1100)]
btrfs: sparse copy between different filesystems/mountpoints

Check if creating a sparse copy ("reflink") of a file on btrfs
expectedly fails when it's done between different filesystems or
different mount points of the same filesystem.

For both situations, these actions are executed:
   - Copy a file with the reflink=auto option.
     A normal copy should be created.
   - Copy a file with the reflink=always option. Should result in
     error.

[sandeen: mostly cosmetic changes]

Signed-off-by: Koen De Wit <koen.de.wit@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: moving and deleting sparse copies on btrfs
Koen De Wit [Mon, 20 Jan 2014 02:56:36 +0000 (13:56 +1100)]
btrfs: moving and deleting sparse copies on btrfs

Moving and deleting cloned ("reflinked") files on btrfs:
   - Create a file and a reflink
   - Move both to a directory
   - Delete the original (moved) file, check that the copy still exists.

[sandeen: mostly cosmetic changes]

Signed-off-by: Koen De Wit <koen.de.wit@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: sparse copy of a directory tree on btrfs
Koen De Wit [Mon, 20 Jan 2014 02:56:36 +0000 (13:56 +1100)]
btrfs: sparse copy of a directory tree on btrfs

Tests file clone functionality of btrfs ("reflinks") on directory trees.
   - Create directory and subdirectory, each having one file
   - Create 2 recursive reflinked copies of the tree
   - Modify the original files
   - Modify one of the copies

[sandeen: mostly cosmetic changes]

Signed-off-by: Koen De Wit <koen.de.wit@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: simple sparse copy testcase for btrfs
Koen De Wit [Mon, 20 Jan 2014 02:56:34 +0000 (13:56 +1100)]
btrfs: simple sparse copy testcase for btrfs

Tests file clone functionality of btrfs ("reflinks"):
   - Reflink a file
   - Reflink the reflinked file
   - Modify the original file
   - Modify the reflinked file

[sandeen: add helpers, make several mostly-cosmetic
 changes to the original testcase]

Signed-off-by: Koen De Wit <koen.de.wit@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agolsqa.pl: update for new tests layout
David Sterba [Mon, 20 Jan 2014 02:28:39 +0000 (13:28 +1100)]
lsqa.pl: update for new tests layout

Accepted parameter types:
- nothing - list all tests from all subdirectories in tests/*
- tests/DIR - list all tests from DIR
- tests/DIR/123 - show header from single test

Signed-off-by: David Sterba <dsterba@suse.cz>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agocheck: accept tests/ prefix for test name on commandline
David Sterba [Mon, 20 Jan 2014 02:28:39 +0000 (13:28 +1100)]
check: accept tests/ prefix for test name on commandline

Just for convenience to let tab completion or shell globs work (files
that are not in the group file are ignored).

Signed-off-by: David Sterba <dsterba@suse.cz>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoMakefile: fix minor build warning
David Sterba [Mon, 20 Jan 2014 02:28:38 +0000 (13:28 +1100)]
Makefile: fix minor build warning

Make in the toplevel directory tries to process the 'group' file that
existed in the previous file layout

$ make
 sed: can't read group: No such file or directory
 sed: can't read group: No such file or directory
 ...

Signed-off-by: David Sterba <dsterba@suse.cz>
Reviewed-by: Ben Myers <bpm@sgi.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfstests: allow override of XFS_IOC_DIOINFO
Eric Sandeen [Mon, 20 Jan 2014 02:28:38 +0000 (13:28 +1100)]
xfstests: allow override of XFS_IOC_DIOINFO

This change allows xfstests runs to simulate apps
which don't bother to call XFS_IOC_DIOINFO, and simply
issue DIO in sizes and alignments of its own choosing.

So i.e.:

# export XFS_DIO_MIN=512

prior to an xfstests run, and these test binaries
should issue 512-aligned DIOs instead of whatever
XFS_IOC_DIOINFO says (i.e. instead of maybe 4k).

(This is in preparation for allowing 512 IOs on
"advanced format" 512/4k disks, when xfs has an
internal 4k sector size).

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoxfs/049, 073: use MKFS_XFS_PROG where appropriate
Eric Sandeen [Mon, 20 Jan 2014 02:28:38 +0000 (13:28 +1100)]
xfs/049, 073: use MKFS_XFS_PROG where appropriate

I got burned on a mishmash system with /usr/sbin/mkfs but
/sbin/mkfs.xfs - or was it the other way around...

Anyway, in these tests, there's no need for the concatenation
to create "mkfs.xfs" - just use MKFS_XFS_PROG.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs/001: filter subvol delete output
Anand Jain [Mon, 20 Jan 2014 02:28:38 +0000 (13:28 +1100)]
btrfs/001: filter subvol delete output

btrfs/001 is failing as the below btrfs-progs patch changed the
output during subvol delete.
Patch :
btrfs-progs: add options to set commit mode after subvol delete

adding it to the filter

Signed-off-by: Anand Jain <Anand.Jain@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs/006: fails with mixed-mode/small disks
Anand Jain [Mon, 20 Jan 2014 02:28:38 +0000 (13:28 +1100)]
btrfs/006: fails with mixed-mode/small disks

as of now the script does not filter 0.00 size  in the
filesystem show output, which is the case in multi-disk
mixed-mode (that is default group type for small disks)

Signed-off-by: Anand Jain <Anand.Jain@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agobtrfs: test send issue with non-aligned clone operations
Filipe David Borba Manana [Mon, 20 Jan 2014 02:28:38 +0000 (13:28 +1100)]
btrfs: test send issue with non-aligned clone operations

Test for an issue in btrfs send where it sent clone operations to user
space with a range (offset + length) that was not aligned with the block
size. This caused the btrfs receive command to send such clone operations
to the ioctl clone API, which would return -EINVAL errors to btrfs receive,
causing the receive command to abort immediately.

This corresponding btrfs linux kernel patch that fixes this issue is at:

https://patchwork.kernel.org/patch/3470401/

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agoaio-stress: use calloc for thread_info array
Jeff Mahoney [Mon, 20 Jan 2014 02:28:27 +0000 (13:28 +1100)]
aio-stress: use calloc for thread_info array

The thread_info array is assumed to be initialized to 0s, but
that causes a segfault when MALLOC_PERTURB_ is set.

Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <dchinner@redhat.com>
10 years agocommon: Enhance the scratch dev pool and deletable device check
Miao Xie [Mon, 20 Jan 2014 01:52:21 +0000 (12:52 +1100)]
common: Enhance the scratch dev pool and deletable device check

_require_scratch_dev_pool() checks the devices number in
SCRATCH_DEV_POOL, but it's not enough since some btrfs RAID10 tests
needs 4 devices, but when 3 or less devices are provided, the check is
useless and related test case will fail(btrfs/003 btrfs/011 btrfs/023).

Also _require_deletable_scratch_dev_pool only checks whether it is
virtul, like virtio(not including virtio-scsi) disk will pass the check
but is unable to delete.

This patch enhance _require_scratch_dev_pool by add optional $1 as
needed device number to do extra check.
And enhance _require_deletable_scratch_dev_pool by directly check
/sys/class/block/$DEV/device/delete file.

Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Signed-off-by: Qu Wenruo <quwenruo@cn.fujitsu.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <dchinner@redhat.com>
10 years agobtrfs/022: fix failed case with qgroup limit test
Wang Shilong [Mon, 20 Jan 2014 01:49:16 +0000 (12:49 +1100)]
btrfs/022: fix failed case with qgroup limit test

To have noexceed test, we should clear data before and then retry.
However, when we are near to quota limit, we may fail to truncate/remove
data before, so we restart everthing here.

Signed-off-by: Wang Shilong <wangsl.fnst@cn.fujitsu.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agogeneric/321, 322: do not remove lost+found
Lukas Czerner [Mon, 20 Jan 2014 01:48:33 +0000 (12:48 +1100)]
generic/321, 322: do not remove lost+found

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agogeneric/322: use _filter_scratch()
Lukas Czerner [Mon, 20 Jan 2014 01:47:56 +0000 (12:47 +1100)]
generic/322: use _filter_scratch()

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
10 years agocommon: Filter out lost+found directory from _ls_l() output
Lukas Czerner [Mon, 20 Jan 2014 01:46:51 +0000 (12:46 +1100)]
common: Filter out lost+found directory from _ls_l() output

Signed-off-by: Lukas Czerner <lczerner@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>