Commit Graph

222 Commits

Author SHA1 Message Date
Koen De Wit c8d9f19638 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>
2014-01-20 13:56:34 +11:00
Filipe David Borba Manana 74643fc9ac 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>
2014-01-20 13:28:38 +11:00
Miao Xie bd50b75f7d btrfs: add wrong compression type regression test
Btrfs would crash when the users wrote some data into a file with
compress flag but the compression of the fs was disabled. This test
case is to check this bug still happen or not.

Signed-off-by: Miao Xie <miaox@cn.fujitsu.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2013-12-03 10:29:34 +11:00
Anand Jain ed14876c03 btrfs: test if raids are actually created
A test case to verify if the given raid option for the
metadata and data are actually created.

Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2013-12-03 10:29:31 +11:00
Josef Bacik cb5dd61e5c btrfs: add basic qgroup testing
We have no tests for testing qgroups, so we have no way of knowing
if our changes are breaking qgroups at all.  Get the ball rolling
with some basic functionality tests, these just make sure we can
enable quotas and do rescan and get sane values back, as well as
make sure the limiting stuff works properly.

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Reviewed-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2013-12-03 10:29:29 +11:00
Liu Bo 6bd85c0a99 xfstests: add regression test for running btrfs balance and defrag concurrently
The test aims to trigger snapshot-aware defrag path in write endio by
running balance, which is not expected and leads to a crash.

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Reviewed-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
2013-11-12 08:05:19 -06:00
Eryu Guan 5b8e9ac032 xfstests btrfs/020: test device replace on RO btrfs
btrfs replace on readonly fs should not be allowed.

Regression test case for commit:
bbb651e Btrfs: don't allow the replace procedure on read only filesystems

Signed-off-by: Eryu Guan <eguan@redhat.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
2013-10-23 18:57:48 -05:00
Josef Bacik 630a2890ff xfstests: add regression test for kernel bz 60673 V2
There was a problem with send trying to overwrite a file that wasn't actually
the same.  This is a test to check this particular case where receive fails when
it should succeed properly.  I tested this to verify it fails without my fix and
passes with my fix.

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
2013-10-22 16:28:19 -05:00
Josef Bacik 09320abafa xfstests: btrfs/018: a regression test for subvolume rename
A user reported a regression where we could no longer rename a subvolume into
another subvolume.  This is a test case to do just that to make sure we don't
regress on this again.

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
2013-10-22 16:07:35 -05:00
Josef Bacik 9d867b7e62 xfstests: btrfs/017: add a regression test for snapshot creation
We had a regression where you couldn't snapshot a file system if you mounted it
ro and then remounted it rw.  This is a test that does just that to make sure we
don't have this problem again.  I ran the test without the fix and it blew up,
and then applied the fix and verified that it passed.  Thanks,

Reviewed-by: Stefan Behrens <sbehrens@giantdisaster.de>
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
2013-10-22 15:55:17 -05:00
Josef Bacik 231e18b343 xfstests: btrfs/016: a hole punching send test
I recently added a patch to avoid sending holes with btrfs send, but I screwed
it up by not sending a hole when we did a hole punch.  This is an xfstest
version of the test I wrote to show that I had a bug and to verify I was fixing
it properly.  This test properly fails with my old patch and passes with my good
patch.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
2013-10-22 15:54:17 -05:00
Josef Bacik 56a3959a96 xfstests: btrfs/015: add a regression test for snapshot creation
We had a regression where you couldn't snapshot a file system if
you mounted it ro and then remounted it rw.  This is a test that
does just that to make sure we don't have this problem again.  I
ran the test without the fix and it blew up, and then applied the
fix and verified that it passed.

[rjohnston: renumbered test]

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Reviewed-by: Stefan Behrens <sbehrens@giantdisaster.de>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
2013-10-18 17:26:18 -05:00
Gui Hecheng 2268142f6f xfstests: an regression test for btrfs balance
Originally, when executing "btrfs balance" right after
"btrfs subvolume snaphot" & "btrfs subvolume delete",
a kernel BUG arises.

This problem is caused by the patch:
[PATCH 1/2] Btrfs: fix for patch "cleanup: don't check
the same thing twice"
The commit id: 48475471728f060bfd2e686f592ef208d3ba8b7d
(in kernel/git/torvalds/linux.git)

handled by the patch:
[PATCH 2/3] Btrfs: fix oops caused by the space balance
and dead roots

[rjohnston: change test number to 14]

Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Reviewed-by: Josef Bacik <jbacik@fusionio.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
2013-10-16 15:21:35 -05:00
Josef Bacik 5956d1dd65 xfstests: btrfs/013 regression test for prealloc with balance
We had a regression where we were not copying csums properly when balancing a
prealloc extent.  Unfortunately the way this showed up the most was with the
csum simply missing, which doesn't result in an error to userspace.  So I've
copied what generic/310 does and check dmesg for csum errors when the test
starts and then compare that count to the csum errors after the test finishes to
see if there was a problem.  This approach caught the error without my fix, and
then passed fine with my fix in place but with the previous errors still in
dmesg.  Thanks,

[rjohnston: changed test number to 13]

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Reviewed-by: Stefan Behrens <sbehrens@giantdisaster.de>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
2013-10-16 15:14:35 -05:00
Eric Sandeen 65d4646af1 xfstests btrfs/012: test btrfs-convert
Turns out btrfs-convert broke on July 3, and lo! we
do not have a regression test, and now we have one,
and there was much rejoicing.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Josef Bacik <jbacik@fusionio.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
2013-10-12 19:30:19 -05:00
Stefan Behrens 53b73199db xfstests: add a test for btrfs device replace operation
This test performs btrfs device replace tests with all possible profiles
(single/dup/mixed/raid0/raid1/raid10), one round with the '-r' option
to 'btrfs replace start' and one round without this option. The
cancelation is tested only once and with the dup/single profile for
metadata/data.

This test takes 181 seconds on my SSD equiped test box and 237s on
spinning disks. Almost all the time is spent when the filesystem is
populated with test data. The replace operation itself takes less than
a second for all the tests, except for the test that is marked as
'thorough' which will run for about 8 seconds on my test box.

The amount of tests done depends on the number of devices in the
SCRATCH_DEV_POOL. For full test coverage, at least 5 devices should
be available (e.g. 5 partitions). With less than 2 entries in
SCRATCH_DEV_POOL, the test is not executed.

The source and target devices for the replace operation are arbitrarily
chosen out of SCRATCH_DEV_POOl. Since the target device mustn't be
smaller than the source device, the requirement for this test is that
all devices have _exactly_ the same size. If this is not the case, the
test terminates with _notrun.

To check the filesystems after replacing a device, a scrub run is
performed, a btrfsck run, and finally the filesystem is remounted.

This commit depends on my other commit:
"xfstest: don't remove the two first devices from SCRATCH_DEV_POOL"

[rjohnston: renumbered to btrfs/011]

Signed-off-by: Stefan Behrens <sbehrens@giantdisaster.de>
Reviewed-by: Josef Bacik <jbacik@fusionio.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
2013-08-28 09:05:25 -05:00
Liu Bo d943515bbc xfstests/btrfs/010: add snapshot-aware defrag for partial extents testcases
This is to test whether snapshot-aware defrag can work well on partial extents.

Reviewed-by: Ben Myers <bpm@sgi.com>
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
2013-08-27 09:07:11 -05:00
Josef Bacik f3df3fab7d xfstests: btrfs/009: regression test for subvol delete
We were allowing users to delete their default subvolume, which is problematic.
This test is a regression test to make sure we don't let that happen in the
future.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>

[rjohnston: renumbered test from 003 to 009]
2013-08-14 15:42:59 -05:00
Josef Bacik 6ef348f857 xfstests: btrfs/008, another send regression test
This is a regression test for a problem we had where we'd assume we had created
a directory if it only had subvols inside of it.  This was happening because
subvols would have lower inode numbers than our current send progress because
their inode numbers are based off of a different counter.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>

[rjohnston: renumbered test from 002 to 008]
2013-08-14 14:54:34 -05:00
Jan Schmidt af86f5668e xfstests btrfs/007: test send / receive
Basic send / receive functionality test for btrfs. Requires current
version of fsstress built (-x support). Relies on fssum tool but can
skip the test if it failed to build.

Signed-off-by: Jan Schmidt <list.xfs@jan-o-sch.net>
Reviewed-by: Josef Bacik <jbacik@fusionio.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>

[rjohnston: renumbered test from 316 to 007]
2013-08-13 17:17:03 -05:00
David Sterba aab6d4e47d xfstests: renumber existing btrfs tests to start with 1
Current numbering is inheried from the single testsuite series. There
are only 6 btrfs-specific tests and it makes more sense to start adding
new ones at a more natural place than 300-something. There's no overlap
with the old and new numbers and I hope there' will be no confusion when
referencing them.

Signed-off-by: David Sterba <dsterba@suse.cz>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
2013-08-13 16:16:27 -05:00
Dave Chinner 8ff10d6d1c 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>
2013-03-26 20:45:43 -05:00