Commit Graph

499 Commits

Author SHA1 Message Date
Darrick J. Wong dca1168737 common/rc: check dmesg for UBSAN errors
If the UBSAN complains about bad behavior, we should capture the
dmesg so that developers can inspect it.

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>
2017-11-16 12:24:12 +08:00
Darrick J. Wong 01140c76e4 common/fuzzy: if the fuzz verb is random, keep fuzzing until we get a new value
If the fuzz verb is 'random', keep generating new random values
until we get one that is distinct from the previous value.

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>
2017-11-16 12:08:43 +08:00
Darrick J. Wong a9df2f23df xfs: test that we don't leak inodes and dquots during failed cow recovery
Add a couple of tests to check that we don't leak inodes or dquots
if CoW recovery fails and therefore the mount fails.

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>
2017-11-10 12:33:58 +08:00
Darrick J. Wong c0c26cecab common/fuzzy: ignore padding fields on xfs
Padding fields are never checked and can have arbitrary values (if we
ever put them to use there'll be a feature flag) so there's no point
in fuzz-testing them.

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>
2017-11-10 12:33:58 +08:00
Misono, Tomohiro 7988dbbceb common/filter.btrfs: add 'zstd' to compress property filter
This fixes the false failure of btrfs/059 when running with the
mount option '-o compress=zstd'.

Signed-off-by: Tomohiro Misono <misono.tomohiro@jp.fujitsu.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
2017-11-10 12:33:38 +08:00
Darrick J. Wong b934adce93 xfs: filter and record the unknown block state messages
Record the unknown block state messages that xfs_repair produces
when we nuke the finobt.

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>
2017-11-03 19:04:49 +08:00
Darrick J. Wong a9006d7c62 generic/459: explicitly require thin_check
The lvm command can invoke the thin pool utilities as part of
managing a thin volume. It'll fail if the thin provisioning
utilities are not installed, so we need to check for its presence
before running a test.

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>
2017-11-03 19:04:49 +08:00
Darrick J. Wong 36ea125868 common/rc: force mkfs for xfs in _mkfs_dev
In generic/459, if the DISCARD of the thin device somehow fails with
this message:

device-mapper: thin: Data device (dm-1) discard unsupported: Disabling discard passdown.

Then we can end up with arbitrary gunk in the thin device.  This
causes mkfs to fail because it's afraid to format the device.  Don't
be afraid, just zap it.  FWIW mkfs.xfs thinks that the thinp device
has an xfs external log because sometimes the thinp device just
happen to be backed by the log of the previous test's scratch fs.

Fix this by making the _mkfs_dev helper always format the device,
per Eryu Guan's suggestion.

[eguan: fix subject to reflect the fix is in common/rc]

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>
2017-11-03 19:04:49 +08:00
Darrick J. Wong 8d021705b5 common/xfs: remove inode-paths cruft
Remove the inode-paths check from _check_xfs_test_fs because we don't
support inode paths, xfsprogs doesn't have a xfs_{check,repair}_ipaths
tool, and it's broken anyway because we ignore _check_xfs_filesystem
(which tells whether or not the filesystem is even still mounted).

[eguan: also fix the return value of _check_xfs_test_fs]

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>
2017-11-03 19:04:49 +08:00
Darrick J. Wong a6ce8c2c9e fstests: add module reloading helpers
Add some helper functions to require that we can reload a given
module, and add a helper to actually do that.  Refactor the existing
users to use the generics.

We need to hoist completely the behaviors of the old btrfs module
helper because we need to confirm before starting the test that we
actually can remove the module.

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>
2017-11-03 19:04:49 +08:00
Darrick J. Wong ced4117fb9 common/xfs: standardize the xfs_scrub output that gets recorded to $seqres.full
Make the xfs_scrub output that gets recorded to $seqres.full follow
the format of xfs_repair checks.

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>
2017-11-03 19:04:49 +08:00
Darrick J. Wong 5cd65cb761 common/xfs: refactor xfs_scrub presence testing
Move all the requirements checking for xfs_scrub into a helper function.
Make sure the helper properly detects the presence of the scrub ioctl
and situations where we can't run scrub (e.g. norecovery).

Refactor the existing three xfs_scrub call sites to use the helper to
check if it's appropriate to run scrub.

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>
2017-11-03 19:04:49 +08:00
Darrick J. Wong 4b69106b60 common/fuzzy: online re-scrub should not preen
When we're doing the second online scrub (to figure out if the
repair did any good) we shouldn't let that second scrub preen the
filesystem in any way. If scrub finds things it can't/won't preen
that turns into a nonzero return code which gets reported
(incorrectly) as a failure.

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>
2017-10-27 13:55:50 +08:00
Darrick J. Wong 148090c1c4 quota: clear speculative delalloc when checking quota usage
Occasionally speculative preallocation kicks in when writing files
to a filesystem under test.  These preallocations consume quota and
/usually/ aren't around after we drop_caches, but there's nothing to
guarantee that they actually have, so the quota reports will be
different before and after the fs remount, causing sporadic test
failures in generic/{23[123],270}.

We now have xfs_spaceman which can instruct XFS to forcibly remove
the speculative preallocations.  This fixes the sporadic failures,
at least for XFS.

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>
2017-10-27 11:46:29 +08:00
Ilya Dryomov 5aa662733a common: turn _filter_xfs_dmesg() into _filter_aiodio_dmesg()
With upstream commit 332391a9935d ("fs: Fix page cache inconsistency
when mixing buffered and AIO DIO"), ext4 (and probably other
non-iomap based filesystems) need a _check_dmesg() whitelist entry
for a new WARN in dio_complete() -- generic/095 and 247 trigger a
dio_complete() splat pretty reliably for me.

Add dio_complete() entry to _filter_xfs_dmesg(), rename it and use
it unconditionally in generic/095, 224, 247 and 446.

[eguan: source common/filter too in generic/446]

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
2017-10-13 00:03:30 +08:00
Ilya Dryomov ca93e26865 common: move _filter_xfs_dmesg() to common/filter
Move this XFS-specific _filter_xfs_dmesg() to common/filter so all
tests could use it. It will be renamed & made more generic and used
by more tests in later patches.

[eguan: add commit log]

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
2017-10-13 00:02:18 +08:00
Amir Goldstein ca5b89eb90 overlay: deduplicate code in overlay mount helpers
factor out helpers _overlay_base_mount() and _overlay_base_umount()
to reduce code duplication.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
2017-10-10 15:44:18 +08:00
Amir Goldstein 766e711f84 overlay: move _overlay helpers to common/overlay
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
2017-10-10 15:44:18 +08:00
Amir Goldstein 8df8ad0cd2 overlay: fix _overlay_config_override of MOUNT_OPTIONS
The config variable OVERLAY_MOUNT_OPTIONS is used to configure
the overlay mount options when running ./check -overlay.
The config variable MOUNT_OPTIONS is used to configure the
mount options for base fs.

If config sets value of OVERLAY_MOUNT_OPTIONS and
does not set MOUNT_OPTIONS, the value of MOUNT_OPTIONS
may be leftover from previous _overlay_config_override, so
don't use that value for base fs mount.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
2017-10-10 15:44:18 +08:00
Amir Goldstein 371f7f52f2 overlay: create helper _overlay_scratch_mount_dirs()
A helper to mount with same options/mnt/dev of scratch mount, but
optionally with different lower/upper/work dirs.
use instead of _overlay_mount_dirs() in all tests where applicable.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
2017-10-10 15:44:18 +08:00
Amir Goldstein 510ea29201 overlay: use default overlay mount options _overlay_mount_dirs()
Tests that use _overlay_mount_dirs() should also use the
default overlay mount options.
Move mount options from overlay_mount() into _overlay_mount_dirs()
and use helper common_dev_mount_opts() to get options.

OVERLAY_MOUNT_OPTIONS is assigned to MOUNT_OPTIONS, so
there is no need to use OVERLAY_MOUNT_OPTIONS directly.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
2017-10-10 15:44:18 +08:00
Amir Goldstein 8cbd341fb4 overlay: remove stale implementation of _scratch_mount_options
_scratch_mount_options() was not implemented correctly for
overlayfs and wasn't used by any overlay tests.

Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
2017-10-10 15:44:18 +08:00
Theodore Ts'o 0b6f8ab93c ext4: skip project quota tests if the kernel does not support them
In _scratch_enable_pquota, use _notrun if the file system with project
quotas enable can't be mounted, since that indicates the kernel
doesn't support that feature.

Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Acked-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
2017-10-09 17:52:22 +08:00
Andreas Gruenbacher 602b27e935 common/rc: Further improve gfs2 support
Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
2017-10-09 15:30:46 +08:00
Dave Chinner 6ba637e0cd fstests: update mkfs.xfs filters for new refactoring
From: Dave Chinner <dchinner@redhat.com>

The new mkfs code adds some output to indicate where the defaults
were sourced from, so filter that out so it doesn't contaminate
tests unnecessarily.

Signed-Off-By: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
2017-10-03 17:10:19 +08:00