Rostislav Skudnov [Mon, 22 Jan 2018 15:57:16 +0000 (15:57 +0000)]
src/dmiperf: Include sys/types.h for u_int32_t
u_int32_t type is defined in sys/types.h, which is often included by
glibc implicitly when some other headers are used, but other C
libraries such as musl may not necessarily do so, therefore an
explicit include is needed.
Signed-off-by: Rostislav Skudnov <rostislav@tuxera.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Wed, 24 Jan 2018 23:53:41 +0000 (15:53 -0800)]
xfs/24[356]: checking cow fork bmap requires CONFIG_XFS_DEBUG=y
These tests requires XFS debugging functionality, so test for that.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Wed, 24 Jan 2018 23:53:35 +0000 (15:53 -0800)]
generic/403: don't spew '$GETFATTR_PROG: Killed' messages
Use a runfile presence check to control the background getfattr loop
instead of using kill -9. This helps us to avoid the problem that
the controlling bash will print a process killed message, which
wrecks the golden output.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Wed, 24 Jan 2018 23:53:29 +0000 (15:53 -0800)]
xfs/122: fix xfs header ordering problems
XFS headers are supposed to be included in a certain order so that
inline functions actually compile correctly. For the most part the
shell feeds us the files in an order that works, but with the
addition of the xfs_dir2_dirblock_bytes function this doesn't always
work now. Therefore, explicitly #include the headers in the
required order.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Wed, 24 Jan 2018 23:53:23 +0000 (15:53 -0800)]
common/rc: report kmemleak errors
If kmemleak is enabled, scan and report memory leaks after every
test.
Note that the kmemleak check support is EXPERIMENTAL! Due to the way
kmemleak works, the leak might be from an earlier test, or something
totally unrelated.
[eguan: add EXPERIMENTAL disclaimer in commit log too]
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
harshads [Wed, 24 Jan 2018 22:58:12 +0000 (14:58 -0800)]
ext4: Ext4 online resize with bigalloc tests.
Add tests to verify Ext4 online resizing feature with bigalloc
feature enabled. We test various resizing scenarios with different
cluster sizes.
Signed-off-by: Harshad Shirwadkar <harshads@google.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Tue, 23 Jan 2018 20:59:08 +0000 (22:59 +0200)]
generic: test decoding file handles after cycle mount
open_by_handle can now store and load file handles from a file:
usage:
open_by_handle -p -o <handles_file> <test_dir> [N]
open_by_handle -p -i <handles_file> <test_dir> [N]
Add a new generic/exportfs test to use these new options to test
decoding file handles after cycle mount and after directory renames.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Tue, 23 Jan 2018 20:59:07 +0000 (22:59 +0200)]
generic/exportfs: golden output is not silent
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Tue, 23 Jan 2018 20:59:06 +0000 (22:59 +0200)]
src/open_by_handle: verify dir content only with -r flag
Without -r flag file handles are opened, but file content is not
read. Treat dir file hanldes, similarly. without -r flag, open dir
file handle, but don't verify its content.
This is going to be used by tests for which dir content is changed
between encode and decode of dir file handle.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Rostislav Skudnov [Mon, 22 Jan 2018 15:57:19 +0000 (15:57 +0000)]
src/pwrite_mmap_blocked: Include signal.h instead of sys/signal.h
sys/signal.h is wrong and should not be used. Musl C library warns
about it.
Signed-off-by: Rostislav Skudnov <rostislav@tuxera.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Rostislav Skudnov [Mon, 22 Jan 2018 15:57:18 +0000 (15:57 +0000)]
src/t_mtab: Replace sys_siglist[] with strsignal()
strsignal(3) says that strsignal() should be used instead of
sys_siglist[].
Signed-off-by: Rostislav Skudnov <rostislav@tuxera.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Rostislav Skudnov [Tue, 23 Jan 2018 08:08:18 +0000 (08:08 +0000)]
src/fssum: Use htobe64() instead of a custom macro
Remove unnecessary htonll() macro definition.
Macros and functions starting with two underscores are usually
internal and shouldn't be used by applications when a version
without "__" is available.
Signed-off-by: Rostislav Skudnov <rostislav@tuxera.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Rostislav Skudnov [Mon, 22 Jan 2018 15:57:14 +0000 (15:57 +0000)]
doio, growfiles: Use standard signal name SIGCHLD instead of SIGCLD
SIGCLD is synonymous with SIGCHLD, but the former is non-standard
and not supported by some C libraries such as musl.
Signed-off-by: Rostislav Skudnov <rostislav@tuxera.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Rostislav Skudnov [Mon, 22 Jan 2018 15:57:13 +0000 (15:57 +0000)]
fstests: Replace all __[u]intNN_t types with standard [u]intNN_t
Integer types such as __uint32_t are non-standard and not supported
by some C libraries such as musl. This commit replaces them with
standard types such as uint32_t and includes stdint.h header where
necessary.
The following command was used to do the changing of types:
sed -r -i 's/__(u?int[0-9]{2}_t)/\1/g' src/*.c ltp/*.c
Signed-off-by: Rostislav Skudnov <rostislav@tuxera.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Rostislav Skudnov [Mon, 22 Jan 2018 15:57:12 +0000 (15:57 +0000)]
fsstress: Include stddef.h for ptrdiff_t
In musl C library headers ptrdiff_t is only defined in stddef.h.
Signed-off-by: Rostislav Skudnov <rostislav@tuxera.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Luis R. Rodriguez [Sun, 21 Jan 2018 07:24:01 +0000 (23:24 -0800)]
check: expunge tests when doing a dry run
Running ./check with -n will not execute tests, however
when exclude files are used we still show them as if
they are run. Test the exclude file prior to assuming
we can run a test on a dry run.
Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Luis R. Rodriguez [Sun, 21 Jan 2018 07:24:00 +0000 (23:24 -0800)]
check: move expunge test into a helper
Move the expunge test into a helper.
[eguan: make TEST_ID local and use grep -q not io redirection]
Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
xiao yang [Fri, 19 Jan 2018 05:38:06 +0000 (13:38 +0800)]
xfs: Regression test for invalid sb_logsunit
If log stripe unit isn't a multiple of the fs blocksize and
mounting, the invalid sb_logsunit leads to crash as soon as we try
to write to the log.
Signed-off-by: xiao yang <yangx.jy@cn.fujitsu.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
xiao yang [Fri, 19 Jan 2018 05:38:05 +0000 (13:38 +0800)]
common: Add _require_no_xfs_bug_on_assert and factor out filter_xfs_dmesg
1) Introduce _require_no_xfs_bug_on_assert helper to check if XFS is
built with CONFIG_XFS_ASSERT_FATAL, and call _require_no_xfs_debug
if bug_on_assert is not available.
2) Apply _require_no_xfs_bug_on_assert in xfs/098 and xfs/115.
3) Move filter_xfs_dmesg from xfs/098 to common/filter, and rename
it as _filter_assert_dmesg.
[eguan: update comment and _notrun message a bit]
Signed-off-by: xiao yang <yangx.jy@cn.fujitsu.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Richard Wareing [Fri, 12 Jan 2018 04:16:19 +0000 (20:16 -0800)]
xfs/realtime: Fix direct invocations of xfs_repair
Fixes direct invocations of xfs_repair to add in -r option if required.
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Richard Wareing <rwareing@fb.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Richard Wareing [Fri, 12 Jan 2018 04:16:18 +0000 (20:16 -0800)]
xfs/realtime: add _require_no_rtinherit function
To better exercise the data path code of realtime subvolumes, we
will set rtinherit=1 during mkfs calls. For tests which this is not
desired we introduce a _require_no_rtinherit function to opt out of
this behavior.
Signed-off-by: Richard Wareing <rwareing@fb.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Richard Wareing [Fri, 12 Jan 2018 04:16:17 +0000 (20:16 -0800)]
xfs/realtime: Add require_no_realtime function
Some tests do not play well with realtime devices, in an effort to
produce a stable set of test which exercise the realtime code paths
we introduce a _require_no_realtime function to allow tests to opt
out of realtime subvolume test runs.
And to make tests generic/409-411 work well with rt device, teach
_get_mount now honors $SCRATCH_OPTIONS.
Signed-off-by: Richard Wareing <rwareing@fb.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Ross Zwisler [Thu, 18 Jan 2018 16:07:37 +0000 (09:07 -0700)]
common/dmthin: dm-thin lacks DAX support
generic/347 currently fails when run in conjunction with the DAX
mount option:
generic/347 72s ... - output mismatch (see
/root/project/xfstests/results//generic/347.out.bad)
--- tests/generic/347.out 2016-05-12 11:56:32.
086618744 -0600
+++ /root/project/xfstests/results//generic/347.out.bad 2018-01-17
16:04:33.
459348448 -0700
@@ -1,2 +1,3 @@
QA output created by 347
+mount: /mnt/xfstests_scratch: can't read superblock on
/dev/mapper/thin-vol.
=== completed
...
(Run 'diff -u tests/generic/347.out
/root/project/xfstests/results//generic/347.out.bad' to see the entire
diff)
This is expected because the dm-thin target currently lacks DAX
support.
Just skip this test if we are using DAX.
Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
xiao yang [Tue, 16 Jan 2018 07:26:55 +0000 (15:26 +0800)]
common/xfs: Check if write supports [-c|-d] option in xfs_db
Make sure _scratch_xfs_set_metadata_field() can be used on an
old xfsprogs-dev(e.g. v3.1.1).
The "-d" option was introduced since xfsprogs-dev v4.7.0 by commit
86769b3 ("xfs_db: allow recalculating CRCs on invalid metadata").
The special argument "--" is only used to end option-scanning
in getopt(). getopt() was introduced since xfsprogs-dev v3.2.3 by
commit
c9f5e3d ("xfs_db: Allow writes of corrupted data")'.
Signed-off-by: xiao yang <yangx.jy@cn.fujitsu.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Ross Zwisler [Wed, 17 Jan 2018 23:23:50 +0000 (16:23 -0700)]
shared/272: don't use data journaling with DAX
shared/272 fails with kernels v4.15-rc1 and beyond when you are
mounted with DAX:
shared/272 [failed, exit status 1] - output mismatch (see
/root/project/xfstests/results//shared/272.out.bad)
--- tests/shared/272.out 2015-12-05 13:12:17.
038257578 -0700
+++ /root/project/xfstests/results//shared/272.out.bad 2018-01-17
15:37:18.
581631116 -0700
@@ -1,3 +1,3 @@
QA output created by 272
Switch data journalling mode. Silence is golden.
-Check filesystem
+/usr/bin/chattr: Device or resource busy while setting flags on
/mnt/xfstests_scratch/file.1
...
(Run 'diff -u tests/shared/272.out
/root/project/xfstests/results//shared/272.out.bad' to see the entire
diff)
This is expected. The following kernel commit:
commit
e9072d859df3 ("ext4: prevent data corruption with journaling + DAX")
makes "chattr +j", which is attempting to turn on data journaling,
return -EBUSY if the ext4 DAX mount option is in use. This was done
to prevent the data corruption shown in xfstest ext4/030, added by
this xfstests commit:
commit
750a24e99e48 ("ext4: test for DAX + journaling corruption")
So, just skip shared/272 if the DAX mount option is in use.
Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Liu Bo [Tue, 16 Jan 2018 20:10:18 +0000 (13:10 -0700)]
btrfs/027: unmount scratch device if test fails
This test, btrfs/027, runs tests against different raid profiles in
a loop, if one of them aborts, it also fails the following ones with
errors like,
Test -m raid10 -d raid10
ERROR: /dev/xxx is mounted
Test -m raid5 -d raid5
ERROR: /dev/xxx is mounted
Test -m raid6 -d raid6
ERROR: /dev/xxx is mounted
_scratch_unmount is added to avoid the above.
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Liu Bo [Tue, 16 Jan 2018 20:10:17 +0000 (13:10 -0700)]
btrfs/011: umount device in _cleanup
btrfs/011 replaces the first device in SCRATCH_DEV_POOL in test,
which is SCRATCH_DEV, and it fails to umount SCRATCH_MNT when it
aborts, because _cleanup doesn't do any umount. This may leave
SCRATCH_DEV not used but other devices from SCRATCH_DEV_POOL still
mounted on SCRATCH_MNT. Then this results in SCRATCH_DEV unusable
for subsequent tests because _require_scratch couldn't umount detect
& umount SCRATCH_DEV correctly.
Fix it by umounting SCRATCH_MNT in _cleanup, so the test always
umounts the devices on exit.
[eguan: add comments and rewrite summary and commit log]
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Tested-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Tuomas Tynkkynen [Thu, 11 Jan 2018 14:05:43 +0000 (16:05 +0200)]
fstests: Add 9p network filesystem support
This commit adds support for the 9p network file system, which is mainly
used by QEMU for sharing a file system from the host to the guest VM.
To run xfstests on it, launch QEMU with e.g.:
-virtfs local,path=$TMPDIR/p9-test,security_model=mapped-xattr,mount_tag=p9-test
-virtfs local,path=$TMPDIR/p9-scratch,security_model=mapped-xattr,mount_tag=p9-scratch
and inside the VM run xfstests with:
export TEST_DEV=p9-test
export SCRATCH_DEV=p9-scratch
export PLAN9_MOUNT_OPTIONS="-o trans=virtio,version=9p2000.L,cache=loose,posixacl"
Signed-off-by: Tuomas Tynkkynen <tuomas@tuxera.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Nikolay Borisov [Thu, 11 Jan 2018 09:17:47 +0000 (11:17 +0200)]
generic/015: Change the test filesystem size to 101mb
This test has been failing for btrfs for quite some time, at least
since 4.7. There are 2 implementation details of btrfs that it
exposes:
1. Currently btrfs filesystem under 100mb are created in Mixed block
group mode. Freespace accounting for it is not 100% accurate - I've
observed consistent 1mb discrepancy between a newly created
filesystem, then writing a file and deleting it and checking the
free space.
2. BTRFS won't flush it's delayed allocation on file deletion if
less than 32mb are deleted. On such files we need to perform sync
(missing in the test) or wait until time elapses for transaction
commit.
In order to avoid both of the aforementioned idiosyncrasies of the
fs make the test filesystem 101mb. With this we achieve 2 things:
1. Since the filesystem is larger we can create a file larger than
32mb, so it's going to be flushed upon deletion and numbers acquired
from df will be accurate
2. We don't create the filesystem in mixed mode and also since the
1mb is less than %1 of 101mb we will fall within the tolerance of 1%
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Qu Wenruo [Thu, 11 Jan 2018 08:01:11 +0000 (16:01 +0800)]
filter: Introduce filter to filter out offset for xfs_io
Some test cases (AFAIK, btrfs RAID recovery test cases) read out
certain location to verify its data.
Such read is mostly OK, but the golden output contains the on-disk
offset, which can differ due to underlying chunk change. (This time
is mkfs chunk layout change for btrfs)
So introduce macro _filter_xfs_io_offset to filter out the offset part
wrote 65536/65536 bytes at offset
136708096
^^^^^^^^^^^^^^^^^^^^
And offset from "pread -v"
08260000: aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa ................
^^^^^^^^^
Only btrfs/14[0-3] are affected.
Reported-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Hou Tao [Thu, 11 Jan 2018 06:49:32 +0000 (14:49 +0800)]
xfs: test for umount hang caused by the pending dquota log item in AIL
When the first writeback and the retried writeback of dquota buffer
get the same IO error, XFS will let xfsaild to restart the writeback
and xfs_qm_dqflush_done() will not be invoked. xfsaild will try to
re-push the quota log item in AIL, the push will return early
everytime after checking xfs_dqflock_nowait(), and xfsaild will try
to push it again.
IOWs, AIL will never be empty, and the umount process will wait for
the drain of AIL, so the umount process hangs.
Signed-off-by: Hou Tao <houtao1@huawei.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Hou Tao [Thu, 11 Jan 2018 06:49:33 +0000 (14:49 +0800)]
common/rc: factor out _scratch_xfs_[get|set]_sb_field
It's common to get and set the values of fields in XFS super block,
so factor them out as scratch_xfs_[get|set]_sb_field, reimplement
them based on _scratch_xfs_[get|set]_metadata_field, and update the
related test cases accordingly.
Also move _scratch_xfs_[get|set]_metadata_field from common/fuzzy to
common/xfs.
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Hou Tao <houtao1@huawei.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Hou Tao [Thu, 11 Jan 2018 06:49:31 +0000 (14:49 +0800)]
dmflakey: support error_writes feature for dm-flakey
Add _require_flakey_with_error_writes() to check the availability of
dm-flakey target and its error_writes feature, and support for
enabling FLAKEY_TABLE_ERROR table by passing FLAKEY_ERROR_WRITES to
_load_flakey_table().
Signed-off-by: Hou Tao <houtao1@huawei.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Hou Tao [Thu, 11 Jan 2018 06:49:30 +0000 (14:49 +0800)]
dmflakey: support multiple dm targets for a dm-flakey device
dm-flakey can be used to emulate IO write error, however, when we
also need to prevent the IO error for a specific range of the block
device (eg., the log region of a XFS), we need to specify multiple
dm targets for the dm device.
Option --table can not accommodate the multiple dm targets case, so
let dmsetup get the possible-multiple-targets table from standard
input.
Signed-off-by: Hou Tao <houtao1@huawei.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eric Whitney [Wed, 10 Jan 2018 21:19:05 +0000 (16:19 -0500)]
common/rc: ext4 doesn't support O_DIRECT with data journaling
Modify _require_odirect() to skip O_DIRECT tests if the ext4 mount
option data=journal has been applied. Because ext4 disables its
O_DIRECT support when in data journaling mode, no significant value
is obtained by running these tests and they consume a significant
amount of run time. Additionally, this change eliminates the need
to triage false negative O_DIRECT test results caused by test
problems, as has occurred from time to time.
Signed-off-by: Eric Whitney <enwlinux@gmail.com>
Reviewed-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Chengguang Xu [Sat, 6 Jan 2018 08:23:58 +0000 (16:23 +0800)]
common/rc: perform _require_metadata_journaling check on overlay base fs
Currently generic shutdown tests are enabled on overlayfs by
extending _require_scratch_shutdown() to check shutdown support for
overlayfs, some of those tests also call
_require_metadata_journaling() to inspect whether test filesystem
support metadata journaling or not, so need to extend
_require_metadata_journaling() as well to check metadata journaling
support for overlayfs in case shutdown tests run on uncommon
overlayfs setup and fail. For example, base filesystem of overlayfs
is ext2 or ext4 with noload mode.
Metadata journaling check is based on base filesystem configurations
and because -overlay option saves those configurations to
OVL_BASE_*, adding restore/override the configurations before/after
the check.
Tested ext2, xfs, ext4(load/no-load mode) as base filesystem of
overlayfs in single and multi section configurations.
[eguan: update _notrun message]
Signed-off-by: Chengguang Xu <cgxu519@icloud.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Wed, 3 Jan 2018 19:22:00 +0000 (11:22 -0800)]
xfs: find libxfs api violations
New test to run tools/find-api-violations.sh in xfsprogs.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Ross Zwisler [Thu, 4 Jan 2018 08:11:21 +0000 (01:11 -0700)]
ext4: test for inline data + DAX corruption
Add a regression test for the following kernel commit:
ext4: prevent data corruption with inline data + DAX
The test passes either if we don't encounter corruption, or if
mounting with DAX + inline data fails. The latter is the way that
we prevent this issue in the kernel.
[eguan: add 'dax' group]
Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Ross Zwisler [Thu, 4 Jan 2018 08:11:20 +0000 (01:11 -0700)]
ext4: test for DAX + journaling corruption
Add a regression test for the following kernel commit:
ext4: prevent data corruption with journaling + DAX
The test passes if either we successfully compare the data between
the mmap with journaling turned on and the one with journaling
turned off, or if we fail the chattr command to turn on or off
journaling. The latter is how we prevent this issue in the kernel.
[eguan: add 'dax' group]
Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Wed, 13 Dec 2017 23:28:05 +0000 (15:28 -0800)]
xfs/068: fix clonerange problems in file/dir count output
In this test we use a fixed sequence of operations in fsstress to
create some number of files and dirs and then exercise
xfsdump/xfsrestore on them. Since clonerange/deduperange are not
supported on all xfs configurations, detect if they're in fsstress
and disable them so that we always execute exactly the same sequence
of operations no matter how the filesystem is configured.
[eguan: move it from xfs/068 to common/dump as Dave suggested]
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Suggested-by: Dave Chinner <david@fromorbit.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Liu Bo [Tue, 2 Jan 2018 20:35:00 +0000 (13:35 -0700)]
btrfs: make sure scrub fixes raid6 corruption
This is to reproduce a bug of scrub, with which scrub is unable to
repair raid6 corruption as expected.
The kernel side fixes are
Btrfs: make raid6 rebuild retry more
Btrfs: fix scrub to repair raid6 corruption
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Wed, 13 Dec 2017 06:04:04 +0000 (22:04 -0800)]
generic: run a long-soak write-only fsstress test
Let a lot of writes soak in with multithreaded fsstress to look for
bugs and other problems.
[eguan: remove '-v' option of fsstress and remove 'clone' group]
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Luis Henriques [Tue, 2 Jan 2018 17:17:05 +0000 (17:17 +0000)]
generic/050: fix _require_local_device $SCRATCH_DEV check order
Commit
2b4eae7fd825 ("common/rc: add scratch shutdown support for
overlayfs") added a _require_local_device check to generic tests 042
and 050. However, for test 050, this check was added _before_
actually verifying that a SCRATCH_DEV actually exists. This patch
simply re-orders the _require_local_device to the right place.
Signed-off-by: Luis Henriques <lhenriques@suse.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Fri, 15 Dec 2017 02:07:31 +0000 (18:07 -0800)]
fsstress: implement the clonerange/deduperange ioctls
Mix it up a bit by reflinking and deduping data blocks when
possible.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Wed, 13 Dec 2017 06:03:48 +0000 (22:03 -0800)]
generic: test error shutdown while stressing filesystem
Test log recovery with repeated (simulated) disk failures. We kick
off fsstress on the scratch fs, then switch out the underlying
device with dm-error to see what happens when the disk goes down.
Having taken down the fs in this manner, remount it and repeat.
This test is a Good Enough (tm) simulation of our internal multipath
failure testing efforts.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Theodore Ts'o [Fri, 22 Dec 2017 18:26:07 +0000 (13:26 -0500)]
ext4: use a slightly bigger file system in ext4/021
An 8 MB file system may not be big enough for certain file system
configurations --- in particular, if the inode size is 2048 bytes.
Make the test file system 10MB instead.
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Ari Sundholm [Thu, 21 Dec 2017 22:10:05 +0000 (00:10 +0200)]
common/encrypt: Create an encrypted equivalent of _scratch_mkfs_sized
Test case generic/399 hardcodes "-O encrypt" in MKFS_OPTIONS when
calling _scratch_mkfs_sized, which only works with the mkfs of
certain filesystems. Create a new helper,
_scratch_mkfs_sized_encrypted, for handling the differences between
the mkfs tools of different filesystems. It also allows those
filesystems whose mkfs doesn't accept "-O encrypt" to skip the test
gracefully until proper support is added for them in the helper.
ubifs is not supported in the new helper despite supporting
encryption, as _scratch_mkfs_sized has no ubifs support and adding
that should be done in a separate patch.
Signed-off-by: Ari Sundholm <ari@tuxera.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Qu Wenruo [Tue, 26 Dec 2017 05:57:44 +0000 (13:57 +0800)]
btrfs: Add new 'limit' test group for btrfs
Btrfs qgroup also supports to limit the usage of specified qgroups.
It's possible to enable qgroup but doesn't enable limit.
(Most user won't use qgroup limit for various problems)
So add a new test group 'limit' for btrfs, as a subset of existing
'qgroup' group.
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Luis R. Rodriguez [Fri, 15 Dec 2017 20:41:18 +0000 (12:41 -0800)]
xfs/040: document purpose
Getting xfs/040 to "pass" takes a bit of effort, however the effort
to require updating xfsprogs is purely an xfsprogs maintainer task
only. There no functional gain by users of xfs or a QA team to get
this test to pass. This is not trivial from the current description
so document this.
Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
Reviewed-by: Bill O'Donnell <billodo@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Chengguang Xu [Fri, 15 Dec 2017 07:47:35 +0000 (15:47 +0800)]
generic: add syncfs test
Inspired by syncfs bug of overlayfs which does not sync dirtyinodes
in underlying filesystem.
Run syncfs and shutdown filesystem(or underlying filesystem of
overlayfs) to check syncfs result.
Signed-off-by: Chengguang Xu <cgxu519@icloud.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Chengguang Xu [Fri, 15 Dec 2017 07:47:34 +0000 (15:47 +0800)]
common/rc: check syncfs support
Add a check case in _require_xfs_io_command() to support syncfs
Signed-off-by: Chengguang Xu <cgxu519@icloud.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Chengguang Xu [Fri, 15 Dec 2017 07:47:33 +0000 (15:47 +0800)]
common/rc: add scratch shutdown support for overlayfs
Enable shutdown tests on overlayfs. This requires configuring
overlayfs with TEST|SCRATCH_DEV pointing to block device, which act
as base fs of overlay. The legacy config (pointing TEST|SCRATCH_DEV
to existing directories) won't support shutdown.
Extend _require_scratch_shutdown() to deal with overlay by checking
shutdown support on $OVL_BASE_SCRATCH_MNT instead of $SCRATCH_MNT,
so we check shutdown support status against the underlying upper fs
of overlay.
Introduce new _scratch_shutdown() helper to do the actual shutdown
work and shutdown upper fs in the case of overlay. Also converting
existing bare 'src/godown' calls to use this helper to avoid false
failures when testing overlayfs.
generic/042 and generic/050 assume $SCRATCH_DEV to be a local
device, so add _require_local_device $SCRATCH_DEV rule.
[eguan: rewrite commit log]
Signed-off-by: Chengguang Xu <cgxu519@icloud.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Ari Sundholm [Wed, 20 Dec 2017 17:00:11 +0000 (19:00 +0200)]
fsstress: getcwd() return value fixes
Add a check for the return value of getcwd(). Fix another check
which mistakenly checks if the return value is less than zero
instead of checking whether the return value is NULL.
Signed-off-by: Ari Sundholm <ari@tuxera.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Ari Sundholm [Wed, 20 Dec 2017 17:00:10 +0000 (19:00 +0200)]
fsstress: Eliminate valgrind noise
This patch plugs what we think are the remaining sources of valgrind
noise we found when running fsstress under valgrind. The noise is
caused by memory being left unfreed before process termination.
Signed-off-by: Ari Sundholm <ari@tuxera.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Luis R. Rodriguez [Wed, 13 Dec 2017 00:45:12 +0000 (16:45 -0800)]
README: document group fsgqa is required
The group fsgqa is also required.
Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Wed, 13 Dec 2017 22:45:01 +0000 (14:45 -0800)]
xfs: fix tests to handle removal of no-alloc create nonfeature
We're removing from XFS the ability to perform no-allocation file
creation. This was added years ago because some customer of SGI
demanded that we still be able to create (empty?) files with zero
free blocks remaining so long as there were free inodes and space in
existing directory blocks. This came at an unacceptable risk of
ENOSPC'ing midway through a transaction and shutting down the fs, so
we're removing it for the create case having changed our minds 20
years later.
However, some tests fail as a result, so fix them to be more
flexible about not failing when a dir/file creation fails due to
ENOSPC.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Wed, 13 Dec 2017 06:03:34 +0000 (22:03 -0800)]
generic/45[34]: test line draw characters in file/attr names
Try to draw a multiline rectangular outline in a file name and xattr
name, just to see if we can.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Wed, 13 Dec 2017 06:03:26 +0000 (22:03 -0800)]
common/xfs: fix scrub support probing again
In the final version of the xfs_io scrub command we don't allow the
probe function to have any parameters, so fix the helper to abide
that.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Luis R. Rodriguez [Wed, 13 Dec 2017 00:45:14 +0000 (16:45 -0800)]
build: update AC_PACKAGE_WANT_GDBM() and src/dbtest.c to build
Modern gdbm-devel packages bundle together gdbm.h and ndbm.h. The
old m4 macro had detection support for some old gdbm libraries but
not for new ones.
We fix compilation of src/dbtest.c by making the autoconf helper
check for this new arrangement:
If both gdbm.h and ndbm.h are found define set both gdbm_ndbm_=true,
and have_db=true, and define HAVE_GDBM_H. The src/dbtest.c already
had a HAVE_GDBM_H but there was never a respective autoconf settter
for it. We can just re-use this and fix it for new arrangement.
Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Luis R. Rodriguez [Wed, 13 Dec 2017 00:45:13 +0000 (16:45 -0800)]
generic/group: add 304 to dedupe group
Other generic tests that test dedupe all have 'dedupe' group except
generic/304. Add 304 to dedupe group too.
[eguan: add commit log]
Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Nikolay Borisov [Thu, 30 Nov 2017 16:05:27 +0000 (18:05 +0200)]
generic: initial fiemap range query test
Fiemap gained support for passing in optional offset len which
denote the range requested, so this patch adds testcases for this
functionality. Aditionally, a special "ranged" argument is added to
the require_xfs_io_command which checks for the presence of fiemap
range support.
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Goldwyn Rodrigues [Thu, 7 Dec 2017 16:00:44 +0000 (10:00 -0600)]
generic: Partial direct write test
Getting an error midway through a direct write would return an error
and the error-code is returned in the write() call. However, partial
data is over-written during the call.
This tests simulates the ENOSPC error to check for partial direct
write consistency.
[eguan: use $AWK_PROG instead of bare awk]
Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Goldwyn Rodrigues [Thu, 7 Dec 2017 16:00:43 +0000 (10:00 -0600)]
generic: Test RWF_NOWAIT
Tests the RWF_NOWAIT flag so the I/O returns immediately with
-EAGAIN on a new file since it requires block allocation.
It creates a file, syncs it, and overwrites the file with
RWF_NOWAIT. This should succeed.
Finally, read the contents to make sure the overwrite is successful.
Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Goldwyn Rodrigues [Thu, 7 Dec 2017 16:00:42 +0000 (10:00 -0600)]
common/rc: Check pwrite parameters in _require_xfs_io_command
There are some parameters added with xfs_io. Check if the pwrite
parameters are available. For some cases, xfs_io now returns
"command -%c not supported", so added "not supported" to count as
error.
Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Theodore Ts'o [Tue, 12 Dec 2017 05:19:37 +0000 (00:19 -0500)]
common/populate: fix S_IFDIR.FMT_BLOCK and ATTR.FMT_LOCAL for ext4 encryption
When ext4 encryption is enabled, the directory entries are encrypted
so we need to create fewer directory entries to guarantee that they
will all fit in a single block.
Also, the encryption metadata takes up extended attribute room so we
can only add a single xattr to guarantee that the xattrs will fit in
the inode.
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Theodore Ts'o [Mon, 11 Dec 2017 22:49:19 +0000 (17:49 -0500)]
common: rework _require_ext4_mkfs_feature
In all of the places where we need check to see if mkfs.ext4 can
support a set of file system features, we also should be checking to
see if the kernel can support those file system features. So rename
_require_ext4_mkfs_feature to _require_scratch_ext4_feature, and
actually format the file system in $SCRATCH_DEV.
Also allow ext4/306 to run on systems where mke2fs doesn't support
the "64bit" option.
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Ross Zwisler [Thu, 7 Dec 2017 21:35:03 +0000 (14:35 -0700)]
build: fix Wlog_Error_String overflow issues
The 'Wlog_Error_String' string is defined to be 256 bytes in length,
but in two places we write into it with a format that contains a
string (wfile->w_file) that has length 1024. This can overflow
Wlog_Error_String, as we see in the new compiler warnings from gcc
7.2.1:
write_log.c:124:37: warning: ‘%s’ directive writing up to 1023 bytes into
a region of size 224 [-Wformat-overflow=]
"Could not open write_log - open(%s, %#o, %#o) failed: %s\n",
^~
Fix this by increasing the length of Wlog_Error_String to 1280
characters (1024 for wfile->w_file plus 256 for the rest of the
format string), and by using snprintf() instead of sprintf() so we
are sure we don't overflow.
Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Ross Zwisler [Thu, 7 Dec 2017 21:35:02 +0000 (14:35 -0700)]
build: fix TagName overflow issues
The 'TagName' string is defined to be 40 characters in length, but
in three places we write into it with a format of "(%.39s)". This
can result in a string of up to 42 characters, the 39 character user
string plus "()\0". This overflows TagName, as we see in the new
complier warnings from gcc 7.2.1:
iogen.c:1277:6: note: 'sprintf' output between 3 and 42 bytes into a
destination of size 40
sprintf( TagName, "(%.39s)", optarg );
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Fix this by limiting the user string to 37 characters.
Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Ross Zwisler [Thu, 7 Dec 2017 21:35:01 +0000 (14:35 -0700)]
build: fix _BSD_SOURCE complier warning
When compiling xfstests with either gcc 6.4.1 or 7.2.1 I see the
following warning:
In file included from /usr/include/stdio.h:27:0,
from fssum.c:25:
/usr/include/features.h:148:3: warning: #warning "_BSD_SOURCE and _SVID_SOURCE
are deprecated, use _DEFAULT_SOURCE" [-Wcpp]
# warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
^~~~~~~
The feature_test_macros(7) man page says this about _BSD_SOURCE:
Since glibc 2.20, this macro is deprecated. It now has the same
effect as defining _DEFAULT_SOURCE, but generates a compile-time
warning (unless _DEFAULT_SOURCE is also defined). Use
_DEFAULT_SOURCE instead. To allow code that requires _BSD_SOURCE
in glibc 2.19 and earlier and _DEFAULT_SOURCE in glibc 2.20 and
later to compile without warnings, define both _BSD_SOURCE and
_DEFAULT_SOURCE.
Keep backwards compatibility with older code by defining both
_BSD_SOURCE and _DEFAULT_SOURCE.
Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Ross Zwisler [Thu, 7 Dec 2017 23:19:50 +0000 (16:19 -0700)]
generic: add test for DAX MAP_SYNC support
This test creates a file and writes to it via an mmap(), but never
syncs via fsync/msync. This process is tracked via dm-log-writes,
then replayed.
If MAP_SYNC is working the dm-log-writes replay will show the test
file with 1 MiB of on-media block allocations. This is because each
allocating page fault included an implicit metadata sync. If
MAP_SYNC isn't working (which you can test by removing the "-S" flag
to xfs_io mmap) the file will be smaller or missing entirely.
Note that dm-log-writes doesn't track the data that we write via the
mmap(), so we can't do any data integrity checking. We can only
verify that the metadata writes for the page faults happened.
[eguan: add comments on _require_log_writes_dax and fix its cleanup]
Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Ross Zwisler [Wed, 6 Dec 2017 00:37:43 +0000 (17:37 -0700)]
dm-log-writes: only replay log to marks that exist
The 'replay-log' executable will replay the dm-log-writes log until
the given mark, or until the end of the log if the mark isn't found.
This means that if the mark you're looking for was never inserted in
the log or if you give garbage to _log_writes_replay_log() the
entire log will be replayed. This can cause unexpected test
results.
Fix this by making sure that the mark we're given actually exists in
the log before we allow the replay.
Signed-off-by: Ross Zwisler <ross.zwisler@linux.intel.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Liu Bo [Mon, 4 Dec 2017 22:33:23 +0000 (15:33 -0700)]
btrfs: reproduce a read failure on raid6 setup
This test case is to reproduce a bug of raid6 reconstruction
process.
The kernel fix are
Btrfs: do not merge rbios if their fail stripe index are not identical
Btrfs: make raid6 rebuild retry more
[eguan: whitespace and indention fix, add 'raid' group]
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Anand Jain [Tue, 5 Dec 2017 11:36:32 +0000 (19:36 +0800)]
btrfs/124: add balance --full-balance option
btrfs balance needs --full-balance option since 4.6, so check the
version and then use it.
As this may be useful for other btrfs tests as well, so this patch
also adds _run_btrfs_balance_start() to the common/btrfs file.
Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
yang xu [Fri, 1 Dec 2017 10:05:36 +0000 (18:05 +0800)]
generic/459: Fix check for ro-remount in extN
Currently ,freeze failure caused by the lack of space can not
guarantee to remount extN filesystem in read-only mode, and test
failed due to "ro" mount option not found. We can add a touch to
trigger the action which aborts journal and ro-remounts the fs.
[eguan: update commit log and comments a bit]
Signed-off-by: yang xu <xuyang.jy@cn.fujitsu.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Qu Wenruo [Wed, 29 Nov 2017 06:14:19 +0000 (14:14 +0800)]
btrfs: make sure btrfs can handle full fs trim correctly
Ancient commit
f4c697e6406d ("btrfs: return EINVAL if start >
total_bytes in fitrim ioctl") introduced a regression where btrfs
may fail to trim any free space in existing block groups.
It's caused by confusion with btrfs_super_block->total_bytes and
btrfs logical address space.
Unlike physical address, any aligned bytenr in range [0, U64_MAX) is
valid in btrfs logical address space, and it's chunk mapping
mechanism of btrfs to handle the logical<->physical mapping.
The test case will craft a btrfs with the following features:
0) Single data/meta profile
Make trimmed bytes reporting and chunk allocation more predictable.
1) All chunks start beyond super_block->total_bytes (1G)
By relocating these blocks several times.
2) Unallocated space is less than 50% of the whole fs
3) Fragmented data chunks
Data chunks will be full of fragments, 50% of data chunks will be
free space.
So in theory fstrim should be able to trim over 50% space of the fs.
(after fix, 64% of the fs can be trimmed)
While the regression makes btrfs only able to trim unallocated
space, which is less than 50% of the total space.
(without fix, it's only 31%)
Fixed by patch named "btrfs: Ensure btrfs_trim_fs can trim the whole
fs".
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Tue, 28 Nov 2017 16:42:02 +0000 (18:42 +0200)]
overlay/042: remove wrong check for empty index
The check for empty index in this test was wrongly copied from test
overlay/034. In test overlay/034 lower file starts as a hardlink, so
nlink accounting is done from the first copy up and index can be cleaned
on last upper hardlink unlink. In this test, lower starts as
non-hardlink, so first copy up does not perform nlink accounting and
therefore, union nlink count does not drop to 0 at the end of the test
and the index is not expected to be cleaned.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Tue, 28 Nov 2017 16:42:01 +0000 (18:42 +0200)]
overlay: regression test for orphan index cleanup on mount
Test nlink accounting of overlay hardlinks with offline modifications.
nlink of overlay inode should account for the union of lower and upper
hardlinks. Orphan index inodes with union nlink 0 should be cleaned on
mount.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Tue, 28 Nov 2017 16:42:00 +0000 (18:42 +0200)]
overlay: regression test for hardlink breakage after unlink and mount cycle
- file A and B are hardlinked in lower
- modify A to trigger copy up and index lower
- unlink A and mount cycle
- check that B still contains the modified data
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Wed, 29 Nov 2017 01:09:04 +0000 (17:09 -0800)]
generic/388: use TIME_FACTOR to scale test duration
Use TIME_FACTOR to increase the amount of time we spend testing log
shutdown recovery.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Filipe Manana [Fri, 17 Nov 2017 14:49:05 +0000 (14:49 +0000)]
btrfs: test send for files with multiple hard links renamed
Test that an incremental send operation works if a file that has
multiple hard links has some of its hard links renamed in the send
snapshot, with one of them getting the same path that some other
inode had in the send snapshot.
At the moment this test fails on btrfs and a fix is provived by a
linux kernel patch titled:
"Btrfs: incremental send, fix wrong unlink path after renaming file"
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Xiao Yang [Mon, 27 Nov 2017 02:34:27 +0000 (10:34 +0800)]
generic/465: just check the actual read data under dio read/write
I got the following message when running generic/465 in ext4
data=journal mode
---------------------------------------------------------------
QA output created by 465
non-aio dio test
encounter an error: block 0 offset 4096, content 62
encounter an error: block 0 offset 122880, content 62
encounter an error: block 0 offset 274432, content 62
encounter an error: block 0 offset 86016, content 62
aio-dio test
encounter an error: block 0 offset 28672, content 62
encounter an error: block 0 offset 12288, content 62
encounter an error: block 2 offset 16384, content 62
encounter an error: block 1 offset 565248, content 62
---------------------------------------------------------------
In ext4 data=journal mode, direct read will fall back to buffer
read, and buffer read doesn't take inode lock, so it doesn't need to
wait for the writer to finish first and sees the intermediate inode
size and returns data less than 1M.
We can just check the actual read data instead of the whole read
buffer.
Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Tue, 14 Nov 2017 10:26:45 +0000 (18:26 +0800)]
fstests: filter readonly mount error messages
util-linux commit
6dede2f2f7c5 ("libmount: support MS_RDONLY on
write-protected devices") changed the error message on read-only
block device, and in the failure case printed one line message
instead of two (for details please see comments in common/filter),
and this change broke generic/050 and overlay/035.
Fix it by adding more filter rules to _filter_ro_mount and updating
associated .out files to unify the output from both old and new
util-linux versions.
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Tue, 14 Nov 2017 08:56:00 +0000 (16:56 +0800)]
overlay/036: filter busy mount message
util-linux v2.30 changed error message of a busy mount and caused
overlay/036 to fail. e.g.
- mount: <device> is already mounted or <mountpoint> busy
+ mount: <mountpoint>: <device> already mounted or mount point busy.
Filter the mount output by a newly introduced _filter_busy_mount
into a unified format.
mount: device already mounted or mount point busy
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Tue, 14 Nov 2017 07:49:36 +0000 (15:49 +0800)]
fstests: filter mount error message for EUCLEAN and ESTALE
util-linux commit
ea848180dd34 ("libmount: add
mnt_context_get_excode()") since v2.30 changed the error message on
EUCLEAN and ESTALE again (and maybe other errno too):
- mount: <device> on <mountpoint> failed: Structure needs cleaning
+ mount: <mountpoint>: mount(2) system call failed: Structure needs cleaning.
and it causes xfs/005, overlay/037 to fail (and probably xfs/333 too,
but it's always _notrun for now).
And what's more, the mentioned tests would also fail when testing
with util-linux prior to v2.21, no one complained just because the
tests are usually _notrun on such old distributions that ship
util-linux < v2.21.
So let's filter out the changing parts and keep the error message
simple.
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Thu, 23 Nov 2017 06:43:43 +0000 (08:43 +0200)]
generic/456: document the fix commit
Add a link to Ted's post with more details about the bug
and the fix.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Thu, 23 Nov 2017 06:43:42 +0000 (08:43 +0200)]
generic/458: document the fix commit
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Chandan Rajendra [Mon, 20 Nov 2017 14:34:10 +0000 (20:04 +0530)]
overlay/038: test consistent values of st_ino/d_ino for subdirs
This commit implements similar changes made to overlay/038 test i.e. in
addition to checking consistent values of st_ino/d_ino for "." and ".."
entries, check also the values for subdir inside each tested directory
setup.
Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Chandan Rajendra [Mon, 20 Nov 2017 14:34:09 +0000 (20:04 +0530)]
overlay/038: code cleanup
This commit implements similar changes made to overlay/041 test i.e.
- Remove duplicate merged dir tests
- Remove duplicate pure upper dir inside merged dir tests
- Sort out comments and error messages
Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Xiao Yang [Tue, 21 Nov 2017 06:27:20 +0000 (14:27 +0800)]
generic/459: add check for dm-snapshot target
generic/459 should be skipped when dm-snapshot is not supported.
Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Josef Bacik [Thu, 16 Nov 2017 18:29:59 +0000 (13:29 -0500)]
perf: a random write buffered fio perf test
This uses the new fio results perf helpers to run a rand write
buffered workload on the scratch device.
[eguan: add Makefile]
Signed-off-by: Josef Bacik <jbacik@fb.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Josef Bacik [Tue, 7 Nov 2017 21:53:32 +0000 (16:53 -0500)]
fstests: add fio perf results support
This patch does the nuts and bolts of grabbing fio results and
storing them in a database in order to check against for future
runs. This works by storing the results in resuts/fio-results.db as
a sqlite database. The src/perf directory has all the supporting
python code for parsing the fio json results, storing it in the
database, and loading previous results from the database to compare
with the current results.
This also adds a PERF_CONFIGNAME option that must be set for this to
work. Since we all have various ways we run fstests it doesn't make
sense to compare different configurations with each other (unless
specifically desired). The PERF_CONFIGNAME will allow us to
separate out results for different test run configurations to make
sure we're comparing results correctly.
Currently we only check against the last perf result. In the future
I will flesh this out to compare against the average of N number of
runs to be a little more complete, and hopefully that will allow us
to also watch latencies as well.
[eguan: add required Makefile updates]
Signed-off-by: Josef Bacik <jbacik@fb.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Sun, 19 Nov 2017 11:56:29 +0000 (13:56 +0200)]
overlay/041: use user defined overlay mount option
Mount non-samefs dirs with OVERLAY_MOUNT_OPTIONS, so user can opt-in
for constant inode numbers on non-samefs setup (i.e. -o xino) when
it is implemented.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Sun, 19 Nov 2017 11:56:28 +0000 (13:56 +0200)]
overlay/041: test consistent values of st_ino/d_ino for subdirs
In addition to checking consistent values of st_ino/d_ino for "."
and ".." entries, check also the values for subdir inside each
tested directory setup.
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Sun, 19 Nov 2017 11:56:27 +0000 (13:56 +0200)]
overlay/041: code cleanup
- Remove duplicate merged dir tests
- Remove duplicate pure upper dir inside merged dir tests
- Sort out comments and error messages
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Chandan Rajendra [Sat, 18 Nov 2017 05:58:04 +0000 (11:28 +0530)]
overlay: Test hardlink breakage on non-samefs setup
This commit adds a test to check hardlink breakage when the
overlayfs instance is composed of two different underlying
filesystem instances.
For example,
$ mount -t xfs /dev/loop0 /mnt/test
$ mount -t xfs /dev/loop1 /mnt/scratch
$ mkdir /mnt/scratch/upper
$ mkdir /mnt/scratch/work
$ mount -t overlay overlay -o lowerdir=/mnt/test \
-o upperdir=/mnt/scratch/upper \
-o workdir=/mnt/scratch/work /mnt/merge
Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Chandan Rajendra [Sat, 18 Nov 2017 05:57:00 +0000 (11:27 +0530)]
overlay: Test consistent st_ino numbers for non-samefs scenario
This commit adds a test to verify consistent st_ino feature when
the overlayfs instance is composed of two different underlying
filesystem instances.
For example,
$ mount -t xfs /dev/loop0 /mnt/test
$ mount -t xfs /dev/loop1 /mnt/scratch
$ mkdir /mnt/scratch/upper
$ mkdir /mnt/scratch/work
$ mount -t overlay overlay -o lowerdir=/mnt/test \
-o upperdir=/mnt/scratch/upper \
-o workdir=/mnt/scratch/work /mnt/merge
The goal of this test is to verify that overlayfs returns consistent
st_ino for the following scenarios,
- Copy-up of lowerdir files
- Rename files and drop dentry/inode cache
- Remount the overlayfs instance
Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Chandan Rajendra [Sat, 18 Nov 2017 05:58:03 +0000 (11:28 +0530)]
overlay/018: Add constant d_ino test
Constant d_ino for hardlinks is possible only when "index" config
feature/mount option is enabled.
Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Chandan Rajendra [Sat, 18 Nov 2017 05:58:02 +0000 (11:28 +0530)]
overlay/017: Remove constant st_ino/d_ino test for hardlinks
Constant st_ino/d_ino for hardlinks requires "index" config
feature/mount option to be enabled. overlay/018 already tests
constant st_ino feature for hardlinks. A future commit will add
constant d_ino test to overlay/018 test.
Signed-off-by: Chandan Rajendra <chandan@linux.vnet.ibm.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Thu, 9 Nov 2017 08:32:42 +0000 (16:32 +0800)]
generic: test zero page cache beyond new EOF on truncate down
From mmap(2) manpage, "a file is mapped in multiples of the page
size. For a file that is not a multiple of the page size, the
remaining memory is zeroed when mapped", this test is to test this
behavior on truncate down.
This is inspired by an XFS bug that truncate down fails to zero page
cache beyond new EOF and causes stale data written to disk
unexpectedly and a subsequent mmap sees non-zeros post EOF.
Patch "xfs: truncate pagecache before writeback in
xfs_setattr_size()" fixed the bug on XFS.
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Liu Bo [Wed, 15 Nov 2017 23:47:59 +0000 (16:47 -0700)]
btrfs/143: make test case more reliable
This changes to use '_scratch_cycle_mount' to drop all caches btrfs
could have in order to avoid an issue that drop_caches somehow
doesn't work on Nikolay's box.
Also use bash -c to run 'read' only when %pid is odd so that we can
read the faulty disk.
Reported-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Tested-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>