Dave Chinner [Tue, 29 Nov 2016 21:32:32 +0000 (08:32 +1100)]
common: split XFS functions from common/rc
common/rc has become a dumping ground for common functions that
don't have a specific topic file. It's getting huge and difficiult
to manage, and people are duplicating functionality because they
can't easily find existing functions in the mess.
Let's start to make it a little easier to manage by splitting out
the XFS specific functions into common/xfs and source that from
common/rc automatically. Other filesytems can follow suit in
future, leaving us with only generic functionality in common/rc.
Signed-Off-By: Dave Chinner <dchinner@redhat.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
Dave Chinner [Wed, 30 Nov 2016 04:59:08 +0000 (15:59 +1100)]
generic/095: add iomap_dio_rw() to the dmesg filter
Oops, we did it again - we moved the XFS dio code warning to a new
function with the iomap direct IO rework. Update the filter to pick
up the new warning location.
Signed-Off-By: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Eryu Guan <eguan@redhat.com>
Dave Chinner [Tue, 29 Nov 2016 02:48:09 +0000 (13:48 +1100)]
check: add brief result summaries
When running multiple sections and hundreds of tests in each config
section, it's hard to see what failed from the summary output
because of the hundreds of tests listed in the "tests run" and
"tests not run" output. Add a "-b" option for brief result summaries
that only output the tests that failed and the summary count of
tests failed.
Jan Kara [Tue, 22 Nov 2016 10:16:35 +0000 (11:16 +0100)]
ext4/001: Fixup file layout with DAX
Since commit 9538d1b69399 (ext4: avoid split extents for DAX
writes), currently sitting in ext4 tree, the block layout of files
has changed when the filesystem is mounted with -o dax and now
matches 'nodelalloc' variant instead of 'nozero'. Fixup the test
configuration.
Signed-off-by: Jan Kara <jack@suse.cz> Reviewed-by: Eryu Guan <eguan@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Thu, 24 Nov 2016 20:12:12 +0000 (22:12 +0200)]
overlay: test ro/rw fd data inconsistecies
Introduce a new test to demonstrates a known issue with overlayfs:
- process A opens file F for read
- process B writes new data to file F
- process A reads old data from file F
This issue is about to be fixed with a patch set by Miklos Szeredi.
Jaegeuk Kim [Fri, 18 Nov 2016 19:36:51 +0000 (11:36 -0800)]
generic: check some inline truncation behaviors
This patch introduces a new testcase to test some small truncations
to check inline_data and its cached data are truncated correctly at
the same time.
The inline_data feature was introduced in ext4 and f2fs as follows.
ext4 : http://lwn.net/Articles/468678/
f2fs : http://lwn.net/Articles/573408/
The basic idea is embedding small-sized file's data into relatively
large inode space.
In ext4, up to 132 bytes of data can be stored in 256 bytes-sized inode.
In f2fs, up to 3.4KB of data can be embedded into 4KB-sized inode block.
Jaegeuk Kim [Mon, 21 Nov 2016 20:02:49 +0000 (12:02 -0800)]
generic: check inode metadata on f{data}sync after power-cut
This patch adds case to test fsync and fdatasync with power-cuts.
The rule to check is:
1) fsync should guarantee all the inode metadata after power-cut,
2) fdatasync should guarantee i_size and i_blocks at least after
power-cut.
Note that, in XFS, it allocates more blocks when doing writes, so it
should close the file before fsync in order to get actual i_blocks
after power-cut. Or, it needs to do truncate the file with a
specific size to turn it off at the beginning.
Omar Sandoval [Thu, 17 Nov 2016 00:29:34 +0000 (16:29 -0800)]
generic: concurrent non-overlapping direct I/O on the same extents
There have been a couple of logic bugs in `btrfs_get_extent()` which
could lead to spurious -EEXIST errors from read or write. This test
exercises those conditions by having two threads race to add an
extent to the extent map.
This is fixed by Linux commit 8dff9c853410 ("Btrfs: deal with
duplciates during extent_map insertion in btrfs_get_extent") and the
patch "Btrfs: deal with existing encompassing extent map in
btrfs_get_extent()"
(http://marc.info/?l=linux-btrfs&m=147873402311143&w=2).
Although the bug is Btrfs-specific, nothing about the test is.
Liu Bo [Wed, 16 Nov 2016 19:17:03 +0000 (11:17 -0800)]
generic/098: update test for truncating a file into the middle of a hole
This updates generic/098 by adding a sync option, i.e. 'sync' after
the second write, and with btrfs's NO_HOLES, we could still get
wrong isize after remount.
This gets fixed by the patch
'Btrfs: fix truncate down when no_holes feature is enabled'
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>
Eryu Guan [Sat, 12 Nov 2016 18:12:33 +0000 (02:12 +0800)]
generic: fix $tmp path in tests
Some tests use "tmp/$$" as $tmp, and this would result in ENOENT
failure if $tmp is referenced in helpers or tests, because we have
no "tmp" dir in pwd.
Fix them to use "/tmp/$$" as all other tests do.
Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Sat, 12 Nov 2016 17:22:26 +0000 (01:22 +0800)]
generic/38[3-6]: require project quota to be enabled on SCRATCH_DEV
generic/38[3-6] are made generic from xfs tests to test project
quota on other filesystems, e.g. ext4. But we should make sure
project quota is enabled in between of _scratch_enable_pquota and
_qmount. Otherwise mount will fail if there's no project quota
support on SCRATCH_DEV, e.g. ext2 and ext3.
Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
Many of the commands using fallocate had an extra % at the beggining
of the error messages, missed the 0x prefix for hex output and printed
the length where it should print the end of the region.
Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
Eric Sandeen [Sat, 5 Nov 2016 02:00:09 +0000 (21:00 -0500)]
xfs: testcase for kernelspace xfs_fsr extent handling flaw
This is a testcase for a bug which goes way back; googling
"xfs_trans_log_inode NULL pointer dereference" yields sporadic
reports over several years.
The test sets up several two-extent files with speculative
preallocation on them, and then runs xfs_fsr. The kernelside
code ignores the preallocation, and therefore sets up the
temporary inode incorrectly after the inode fork swap.
It is a "dangerous" test because the extent mishandling on
the temporary inode causes a null pointer dereference and
oops when the inode's i_itemp pointer gets overwritten
and we blow up in logging code that tries to use it.
Eryu Guan [Fri, 4 Nov 2016 16:16:10 +0000 (00:16 +0800)]
xfs/021: filter out detailed array element info from xfs_db
Starting from xfsprogs commit 384283555871 ("xfs_db: print one array
element per line"), xfs_db prints one array element per line. This
breaks the filter in xfs/021, which now fails as:
Zorro Lang [Tue, 8 Nov 2016 05:33:50 +0000 (13:33 +0800)]
fstests: test xfs_copy V5 XFS without -d option
Before xfsprogs commit a872b62 (xfs_copy: band-aids for CRC
filesystems), xfs_copy requires the "-d" option to copy a V5 XFS,
because it can't rewrite the UUID of V5 XFS properly.
Now xfs_copy already full support to copy a V5 XFS. But for above
old problem, xfstests use below patch to make sure xfs_copy always
use "-d" option to copy a V5 XFS:
8346e53 common: append -d option to XFS_COPY_PROG when testing v5 xfs
That cause xfstests miss the coverage of copying a V5 XFS without
"-d". For test this feature I did below things:
1. Changed init_rc(), add "-d" to $XFS_COPY_PROG if xfs_copy can't
copy a V5 XFS properly.
2. xfs/073 test V4 xfs forcibly by specify "-m crc=0" in case. I
think it's useless now, so remove it.
3. Changed xfs/032. If xfs_copy full support to copy a V5 XFS, test
with and without "-d" option, or only test with "-d" option.
Zorro Lang [Mon, 7 Nov 2016 06:30:12 +0000 (14:30 +0800)]
generic: multi-thread freeze/unfreeze test under fsstress
Multi-threads freeze/unfreeze maybe trigger some bugs, e.g: panic,
hang or data corruption etc. It does't check the return value of
freeze/unfreeze, but it tries to make sure fsstress won't run fails,
and no any other bugs happen.
[eguan: add comment on why we check _scratch_mount failure]
Eryu Guan [Sun, 6 Nov 2016 17:43:33 +0000 (01:43 +0800)]
fstests: make xfs_io mandatory
_test_inode_flag() and _test_inode_extsz() use "which $XFS_IO_PROG"
to check if xfs_io command is available. And "-i" option was added
to XFS_IO_PROG varibable by commit 54659ecdb575 ("fstests: run
xfs_io with -i option if supported"). So the command becomes "which
/usr/sbin/xfs_io -i", and it stops and waits for input from stdin,
because "-i" option of "which" means "Read aliases from stdin".
I've seen xfs/008 hang when testing with latest xfsprogs, where
xfs_io has "-i" support.
Fix it by removing the xfs_io command detections, and making xfs_io
mandatory in common/config.
Also fix the indentions in these functions, use tab instead of
spaces, while we're at it.
Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
Dave Chinner [Wed, 2 Nov 2016 21:15:25 +0000 (08:15 +1100)]
filter: xfs_io output has dropped "64" from error messages
Upstream xfs_io has been converted to always use LFS compliant
(i.e. 64 bit) pwrite() rather than pwrite64(). Similar changes have
been made for multiple syscalls that have "*64" variants. hence the
error output of all these commands has changed, such as "pwrite64:
..." to "pwrite: ....".
Make a filter to catch the *64 variants and strip it, and
convert all the golden output to use the non-*64 variant. This will
make all golden output matching work correctly regardless of what
version of xfs_io is in use.
Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
Try to discover the allocation size. For NFS, the st_blksize is
optimized for the network, and will usually be much larger than the
allocation size of the exported filesystem, which may trigger
preallocation strategies in the exported filesystem causing the seek
tests here to fail.
Eryu Guan [Sat, 22 Oct 2016 05:27:33 +0000 (13:27 +0800)]
xfs/054: only filter ROOT_INO at the beginning
In the test ROOT_INO is filtered out and/or replaced, but if
ROOT_INO is also 32, more "32"s are filtered and replaced than
expected. This happens to me when testing 512B block size XFS and 1k
block size CRC enabled XFS.
Fix it by filtering out only ROOT_INO at the beginning of a line,
and removing all "g" modifiers in sed expressions.
Also the ROOT_INO should be the root inode number of TEST_DIR not
SCRATCH_MNT.
Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Wed, 19 Oct 2016 08:52:33 +0000 (11:52 +0300)]
overlay/013: adjust test expectation to kernel v4.8
Commit 4d0c5ba (vfs: do get_write_access() on upper layer of overlayfs)
that was merged for kernel v4.8 changes the behavior of execve+truncate
in a subtle way.
When file is executed from lower and then truncated, the truncation is
allowed, becasue it only affects the size of the copied up file and does
not affect the VM mapping of the executed lower file.
Amir Goldstein [Wed, 19 Oct 2016 08:52:31 +0000 (11:52 +0300)]
t_truncate_self: describe self better in error message
Include the name of the program that is trying to trucate itself
to error messages to distinguish between output for different
test cases (e.g. test_lower and test_upper in overlay/013).
Xiao Yang [Wed, 19 Oct 2016 05:33:07 +0000 (13:33 +0800)]
xfs: remove the device parameter from __populate_check_xfs_dir
In commit c08ebd092 ("xfs: fix $XFS_DB_PROG usage"), the need for
callers to pass the device to populate into
__populate_check_xfs_dir() was removed. So we can now clean up all
the callers by removing the device parameter.
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>
Darrick J. Wong [Mon, 17 Oct 2016 22:09:28 +0000 (15:09 -0700)]
fstests: fix fallocate commands that need the unshare switch
We re-added the UNSHARE flag to fallocate, so go make sure that all
the unshare tests actually check that the installed copy of xfs_io
supports the 'funshare' command and that the underlying filesystem
understands the flag, and change the tests themselves to use
funshare.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Mon, 17 Oct 2016 22:09:21 +0000 (15:09 -0700)]
xfs: set the refcount btree cowflag when setting up cow
When we're setting up a fake cow extent in the refcountbt to test
cleanup of fake cow extents, set the cowflag in the record field
to reflect our new disk format of storing the staging extents in
the right side of the tree.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Eryu Guan <eguan@redhat.com>
Amir Goldstein [Mon, 17 Oct 2016 07:31:41 +0000 (10:31 +0300)]
fstests: run xfs_io with -i option if supported
Try to run xfs_io with command line option -i, which starts an idle
thread before performing any io.
The purpose of this idle thread is to test io from a multi threaded
process. With single threaded process, the file table is not shared
and file structs are not reference counted.
In order to improve the chance of detecting file struct reference
leaks, we should run xfs_io commands with this option as much as
possible.
Analysis of the effect of xfs_io -i on tests runtime showed that it
may lead to slightly longer run times in extreme cases (e.g +3s for
generic/132), but has a negligible effect on runtime of tests among
the 'quick' group (worst case +0.3s for generic/130).
Amir Goldstein [Mon, 17 Oct 2016 07:23:33 +0000 (10:23 +0300)]
fstests: strip quotes from "$XFS_IO_PROG" call sites
The value of "$XFS_IO_PROG" may contain extra flags after the
binary path (e.g. -F), so it is wrong to use the variable inside
quotes in xfs_io execution call sites.
This bug surfaced while testing the new xfs_io -i flag.
Eric Biggers [Wed, 12 Oct 2016 22:03:08 +0000 (15:03 -0700)]
generic/314: don't test SGID behavior after setfacl
Linux 4.9 (since commit 073931017b49: "posix_acl: Clear SGID bit
when setting file permissions") now may clear the SGID bit when
setting a POSIX ACL, to match chmod() behavior. This was making
generic/314 fail. Since SGID bit clearing on setfacl is already
tested by generic/375, just remove the problematic portion of
generic/314.
Eric Biggers [Wed, 12 Oct 2016 22:03:07 +0000 (15:03 -0700)]
generic/375: test both regular file and directory
generic/375 previously only tested SGID being cleared on a regular
file. It should test SGID being cleared on a directory too. Though
this is not required by POSIX, it is the Linux behavior.
Zorro Lang [Tue, 11 Oct 2016 09:40:39 +0000 (17:40 +0800)]
common/rc: use real device name in _sysfs_dev function
_sysfs_dev try to find the major and minor device numbers of
SCRATCH_DEV, by 'stat -c%t $SCRATCH_DEV' and 'stat -c%T
$SCRATCH_DEV'.
But if the SCRATCH_DEV is symlink (e.g: /dev/mapper/
testvg-scratchdev), stat command can't find correct device numbers.
So try to find the real name of the SCRATCH_DEV at first.
Eryu Guan [Sat, 8 Oct 2016 06:02:04 +0000 (14:02 +0800)]
xfs: renumber tests after merge
Tests were merged with high seq numbers to avoid conflicts with
other tests. Now renumber them to contiguous numbers, as all other
tests have been merged correctly. This is easier to do than
assigning the final seq numbers at commit time.
Eric Sandeen [Fri, 30 Sep 2016 02:32:25 +0000 (21:32 -0500)]
xfs: exercise and validate the xfs_io inode command
Run various modes of the xfs_io "inode" command.
This fails today, I have some patches to fix it up.
The "grep -q" for failures strings are fairly loose
because I'm changing them, and don't want to depend
on the exact error or usage message ...
Darrick J. Wong [Fri, 30 Sep 2016 02:23:41 +0000 (19:23 -0700)]
xfs: fix $XFS_DB_PROG usage
xfs_db requires us to pass in the log device, if any; this can be
accomplished via _scratch_xfs_db_options (if we're operating on the
scratch device, anyway). However, many of the tests/xfs/ scripts
pass only $SCRATCH_DEV directly, so they'll fail if we test with an
external log. Fix that by adding a new _scratch_xfs_db helper.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Thu, 29 Sep 2016 02:28:40 +0000 (19:28 -0700)]
xfs/207,327: fsxattr no longer has the reflink flag
The FS_XFLAG_REFLINK flag was removed from struct fsxattr prior to
the inclusion of reflink in XFS, so remove it from the test outputs.
Note that the inode flag still exists; it's simply not presented
to userspace any more.
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 [Thu, 29 Sep 2016 02:28:34 +0000 (19:28 -0700)]
xfs/130: don't modify files after failed mount
In xfs/130, we try to mount a filesystem with the expectation that it
will fail. Therefore, it is inappropriate to try to write to the
mountpoint, since it could otherwise be writable.
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>
Brian Foster [Mon, 15 Aug 2016 12:56:26 +0000 (08:56 -0400)]
generic: shutdown fs after log recovery
XFS had a bug that lead to a possible out-of-order log recovery
situation (e.g., replay a stale modification from the log over more
recent metadata in destination buffer). This resulted in false
corruption reports during log recovery and thus mount failure.
This condition is caused by system crash or filesystem shutdown
shortly after a successful log recovery. Add a test to run a
combined workload, fs shutdown and log recovery loop known to
reproduce the problem on affected kernels.
generic/361: require that file system uses a real block device
This test tries to use _mkfs_dev to format a loop device and then
tries to mount it. For file systems that don't use block devices
(nfs, tmpfs, etc.) this is doomed to failure. So skip this test if
$SCRATCH_DEV is not a block device.
Greping username "fsgqa" in passwd file to get user id doesn't
always work, because the given username could match multiple
entries, e.g. when we have user "123456-fsgqa" (used by other tests)
in passwd file.
Fix it by using "id -u $qa_user" to get the user id directly.
Reviewed-by: Zorro Lang <zlang@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
The behavior of different combinations of space_cache mount options
wasn't well defined, which led to a regression between my initial
patches adding the free space tree and the 4.5 release. Add a test to
exercise all of the meaningful permutations of clear_cache,
nospace_cache, and space_cache.
This is a regression test for Linux kernel commit "Btrfs: fix mount -o
clear_cache,space_cache=v2".
Wang Xiaoguang [Fri, 23 Sep 2016 03:12:07 +0000 (11:12 +0800)]
generic: truncate heavily reflinked file
In btrfs, there is a bug about btrfs' truncate codes, it'll leak
some fs space as the truncate operation proceeds. If this truncate
operation is very large, later metadata request in this truncate
operation may fail for enospc error. I also have sent a kernel
patch fot btrfs to fix this issue.
Eric Sandeen [Thu, 22 Sep 2016 22:51:03 +0000 (17:51 -0500)]
xfs: make some xfs project quota tests generic
This patch makes some xfs project quota tests generic,
so that there is at least some coverage on ext4 for this
(semi-)new feature.
It requires bleeding edge xfsprogs, so that xfs_quota and
xfs_io's chproj command can operate on "foreign" filesystems,
and requires relatively new e2fsprogs to enable the project
quota feature on-disk.
The mechanism for enabling project quota on ext4 is a bit
arcane, but hopefully I've encapsulated it reasonably well here.
Changes:
* look for "project" feature in _require_prjquota
* look for accounting not enforcement (-P) in _require_prjquota
* add a _scratch_enable_pquota to turn on project quota feature
* s/pquota/quota/ in _qmount_option for ext4
* add helper to test for xfs_io chproj on foreign filesystems
* switch from block to inode quota in xfs/133 because empty
ext4 dirs consume one block
* cosmetic/generic changes for mkfs, require tests, etc.
Eric Sandeen [Thu, 22 Sep 2016 18:54:16 +0000 (13:54 -0500)]
xfs: modify quota tests to work on generic filesystems
Fix several xfs quota tests to work on non-xfs filesystems.
New _require function to be sure that the xfs_quota tool can operate
on foreign filesystems; if it can, and if it needs to, it adds "-f"
to the XFS_QUOTA_PROG variable.
Modify _qmount to do quotacheck/quotaon to mount and /enable/
quota. On xfs this isn't needed and/or fails; it's ignored.
All quota-related options used as arguments to _qmount are changed
from i.e. uquota to i.e. usrquota; the latter is standard across
almost all linux filesytems, including xfs.
xfs/260 filters out the root/default quota line, because ext4
consumes a different amount of space than xfs, and it's not what
we're testing for, so just ignore it.
Signed-off-by: Eric Sandeen <sandeen@redhat.com> Reviewed-by: Bill O'Donnell <billodo@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
fstests: require scratch dev in tests using dm targets
We build dm device on top of scratch dev so we require $SCRATCH_DEV
to be a valid block device in _require_dm_target(). And we need to
_require_scratch before _require_dm_target, otherwise test fails if
there's no SCRATCH_DEV defined, where it should _notrun.
+Usage: _require_block_device <dev>
So add _require_scratch_nocheck to generic/347 (we do the fs check
on thinp device), move _require_scratch before _require_dm_target in
xfs/006 and xfs/264.
Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
Zorro Lang [Wed, 14 Sep 2016 15:55:58 +0000 (23:55 +0800)]
xfs: various operations on mounted fs
xfsprogs takes use of ustat(2) to check if a given device is
mounted, but ustat(2) is deprecated and may not be available on
newer architectures, e.g. aarch64. In such cases, xfsprogs failed to
detect mounted device, which would result in something like
xfs_mdrestore overwriting a mounted XFS.
So adding a case to do xfs_mdrestore, xfs_copy, xfs_db, mkfs and
xfs_repair against mounted XFS to make sure they refuse to do so.
Xiao Yang [Wed, 14 Sep 2016 02:52:36 +0000 (10:52 +0800)]
xfs/098: fix xfs_repair on newer xfsprogs
1) use _repair_scratch_fs instead of xfs_repair
The obsolete xfs_repair always cleared the log regardless of
whether it is corrupted and current xfs_repair only cleared the
log when -L option is specified. xfs_repair -L option should be
used to clear it if xfs_repair failed to clear log.
2) catch non-zero return value instead of 2
It can be applied to both the old return value 1 and the new
return value 2
3) add filter_xfs_dmesg to ignore mount related warnings
If we corrupt log and mount on a CONFIG_XFS_WARN build, there
will be mount related warnings in dmesg as expected.
Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com> Reviewed-by: Zorro Lang <zlang@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
Overlayfs had a bug that hardlinks don't share inode, if
chmod/chown/etc. is performed on one of the links then the inode
belonging to the other one won't be updated. The following patch
fixed this issue:
common/rc: Enhance _exclude_scratch_mount_option to handle multiple options
Enhance _exclude_scratch_mount_option() function to normalize mount
options. Now it can understand and extract real mount option from
string like "-o opt1,opt2 -oopt3".
And now we do word grep to handle mount options like noinode_cache
and inode_cache.
Finally, allow it to accept multiple options at the same time. No
need for multiple _exclude_scratch_mount_option lines now
Eryu Guan [Mon, 8 Aug 2016 16:45:46 +0000 (00:45 +0800)]
overlay: copy-up lowerdir which has opaque xattr set
When copying up a directory with opaque xattr set, the xattr was
copied up as well, after a remount the opaque flag is honored so the
copied-up directory is treated as opaque, which causes files created
in the lowerdir to be hidden when using multiple lower directories.
This is fixed by "ovl: don't copy up opaqueness".
Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
Eryu Guan [Tue, 9 Aug 2016 07:28:47 +0000 (15:28 +0800)]
common/rc: introduce _overlay_mount_dirs helper
Introduce a new _overlay_mount_dirs() helper to do the actual
overlay mount operation and factor _overlay_scratch_mount and
_overlay_mount code to use a single implemention of
_overlay_mount_dirs(). Also convert all bare mount of overlay in
tests to use it.
Suggested-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
Darrick J. Wong [Thu, 25 Aug 2016 23:28:38 +0000 (16:28 -0700)]
xfs/130,235: deal with an unreplayable dirty log
Now that we have log replay items, an FS shutdown due to a corrupt
btree results in a log that can't be replayed. The only solution
here is to zap the log when we're fixing the corrupt fs, so do that
here.
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>
Wang Xiaoguang [Wed, 31 Aug 2016 11:50:55 +0000 (19:50 +0800)]
generic/172: raise fs size
In original codes, if block size is 4096, fs size will be limited
to 60MB. In such small fs, btrfs is not able to write 40MB data,
because some space has been reserved internally, so the first
_pwrite_byte in this test case will fail for enospc error.
Also from this test case's test purpose, it tries to reflink a file
that uses more than half of the fs space, so here we can just define
fs size to be 256MB, the file to be reflinked to be 168MB.
Signed-off-by: Wang Xiaoguang <wangxg.fnst@cn.fujitsu.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Eryu Guan <eguan@redhat.com>
Eric Sandeen [Tue, 30 Aug 2016 19:12:27 +0000 (14:12 -0500)]
README: fix up dependency lists
2 things: Make the dependency lines cut-and-paste-able with
line continuations, and fix up the Fedora deps a bit
(remove "awk" - should be "gawk" - and add a couple other
missing dependencies)
Zorro Lang [Sun, 28 Aug 2016 12:50:25 +0000 (20:50 +0800)]
xfs: rw remount with unknown ro-compat features
Although ro-compat features cannot be mounted rw, a bug allows an
ro->rw remount transition, and this will corrupt the filesystem if
it contains ro-compat features unknown to the running kernel.
This bug has been fixed on linux kernel (d0a58e8 xfs: disallow rw
remount on fs with unknown ro-compat features), this case is the
regression testcase of that bug.
Theodore Ts'o [Wed, 24 Aug 2016 21:01:28 +0000 (17:01 -0400)]
fstests: add punch, collapse, insert, zero test groups
Define test groups for those tests which have _require_xfs_io_command
for punch, collapse, insert, and zero. This makes it easier to
exclude tests that use one of these fallocate commands. Or if you
want to specifically test for those fallocate commands you can do
this.
This obviates an out-of-tree xfstests patch I maintain which used an
XFS_IO_AVOID environment variable to suppress running tests that use
punch, collapse, insert, etc. This was rejected because of the
claim that it could be done using groups. So this commit is in
response to those upstream comments.
Filipe Manana [Tue, 23 Aug 2016 20:14:23 +0000 (21:14 +0100)]
generic: fsync after file rename
Test that if we rename a file, without changing its parent
directory, create a new file that has the old name of the file we
renamed, doing an fsync against the file we renamed works correctly
and after a power failure both files exists.
This is motivated by an issue found in btrfs, introduced in the
linux kernel 4.8-rc2, that caused lockdep to report a deadlock
scenario. The btrfs issue is fixed by the patch titled:
"Btrfs: fix lockdep warning on deadlock against an inode's log mutex"
Tested against ext3/4, xfs, f2fs and reiserfs as well.