Commit Graph

1942 Commits

Author SHA1 Message Date
Brian Foster 34ff5cdfc4 xfstests: test speculative preallocation reclaim on ENOSPC/EDQUOT
XFS can allocate significant amounts of space to files via speculative
preallocation. Such preallocation may not be reclaimed automatically on
file close() if a file is repeatedly opened and extended. For smaller
filesystems with relatively large and slow growing files, this
preallocation can linger for some time, including contributing to out of
space conditions.

Create a situation where an fs is near out of space while several files
still have lingering, significant preallocations. Verify that new
writers reclaim the preallocated space rather than return ENOSPC. Repeat
a similar test for quota limits and EDQUOT.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-06-18 09:33:26 +10:00
David Disseldorp f8c880df31 src/cloner: add CIFS_IOC_COPYCHUNK_FILE support
cifs.ko supports server-side copy offloads via CIFS_IOC_COPYCHUNK_FILE.
In handling the ioctl, the request is split into a series of
SMB2 FSCTL_SRV_COPYCHUNK wire requests, which may be handled by the SMB
server as a local read/write, or COW clone as is the case for Samba with
vfs_btrfs.

Signed-off-by: David Disseldorp <ddiss@suse.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-06-18 09:32:59 +10:00
David Disseldorp c79bb5c641 src/cloner: check filesystem type
Limit clone requests to Btrfs only for the moment.

Signed-off-by: David Disseldorp <ddiss@suse.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-06-18 09:32:25 +10:00
Eryu Guan 76d0cfb488 generic: new case to test getcwd(2)
The following kernel commit introduced a race condition that causes
getcwd(2) to return "/" instead of correct path

232d2d6 dcache: Translating dentry into pathname without taking rename_lock

Jan Stancek hit it once when building ltp and Mikulas Patocka could
hit it by running lvm2 test suite. Please refer to this thread

https://www.mail-archive.com/ltp-list@lists.sourceforge.net/msg17896.html

These commits fixed the bug
ede4ceb prepend_path() needs to reinitialize dentry/vfsmount/mnt on restarts
f650080 __dentry_path() fixes

Cc: Artem Savkov <asavkov@redhat.com>
Cc: Jan Stancek <jstancek@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-06-18 09:31:38 +10:00
Michael L. Semon c8dc487de7 JFS: Add maximum ACL count into common/attr
Enter max ACL count into common/attr for JFS, with the purpose of
getting JFS to pass xfstests generic/026.

Signed-off-by: Michael L. Semon <mlsemon35@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-06-18 09:31:01 +10:00
Filipe David Borba Manana 7b564f39ef btrfs: add test for btrfs clone + fsync durability
Regression test for btrfs ioctl clone operation + fsync + log
recovery. The issue was that doing an fsync after cloning into
a file didn't gave any persistence guarantees as it should.
What happened was that the in memory metadata (extent maps)
weren't updated, which made the fsync code not able to detect
that file data has been changed and must be persisted to the
log.

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

    Btrfs: make fsync work after cloning into a file

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-06-18 09:30:29 +10:00
Jeff Moyer 28f8c4c7fb resvtest.c: fix invalid use of sizeof()
sizeof(pointer) will give you the size of a pointer, not the space
allocated to it.  I noticed this when gcc complained:

resvtest.c:76:33: warning: argument to 'sizeof' in 'memset' call is the same expression as the destination; did you mean to provide an explicit length? [-Wsizeof-pointer-memaccess]
  memset(writebuffer, 'A', sizeof(writebuffer));

Signed-off-by: Jeff Moyer <jmoyer@redhat.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-06-18 09:29:57 +10:00
Brian Foster c1ff85dfb6 xfs/013: allow non-write fsstress operations in background workload
It has been reported that test xfs/013 probably uses more space than
necessary, exhausting space if run against a several GB sized ramdisk.
xfs/013 primarily creates, links and removes inodes. Most of the space
consumption occurs via the background fsstress workload.

Remove the fsstress -w option that suppresses non-write operations. This
slightly reduces the storage footprint while still providing a
background workload for the test.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-06-18 09:29:22 +10:00
Filipe David Borba Manana 36271c9b68 btrfs: add test for btrfs cloning with file holes
Regression test for the btrfs ioctl clone operation when the source range
contains hole(s) and the FS has the NO_HOLES feature enabled (file holes
don't need file extent items in the btree to represent them).

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

    Btrfs: fix clone to deal with holes when NO_HOLES feature is enabled

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-06-18 09:29:00 +10:00
Filipe David Borba Manana 45d1fac130 btrfs: test for btrfs send when nested subvols/snapshots exist
Regression test for a btrfs incremental send issue where the difference
between the snapshots used by the incremental send consists of one of
these cases:

1) First snapshot has a directory with name X and in the second snapshot
   that directory doesn't exist anymore but a subvolume/snapshot with
   the same name (X) exists;

2) First snapshot has a subvolume/snapshot with name X and in the second
   snapshot that subvolume/snapshot doesn't exist anymore (might have been
   replaced by a directory with the same name or not).

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

    Btrfs: send, don't error in the presence of subvols/snapshots
    Btrfs: set dead flag on the right root when destroying snapshot

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-05-27 12:07:42 +10:00
Filipe David Borba Manana 3318629e4a btrfs: add test for btrfs send with large xattrs
Verify that btrfs send is able to replicate xattrs larger than
PATH_MAX. This is possible if the b+tree leaf size is larger
than 4Kb (mkfs.btrfs's default is max(16Kb, PAGE_SIZE) as of
btrfs-progs v3.12, and max(4Kb, PAGE_SIZE in older versions).

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

   Btrfs: send, use the right limits for xattr names and values

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-05-27 12:07:39 +10:00
Filipe David Borba Manana d14027745c btrfs: add test for clone operation
This is a test to verify that the btrfs ioctl clone operation is
able to clone extents of a file to different positions of the file,
that is, the source and target files are the same. Existing tests
only cover the case where the source and target files are different.

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: David Disseldorp <ddiss@suse.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-05-27 12:07:36 +10:00
Filipe David Borba Manana 86da66cc4f common: add helper require function _require_btrfs_cloner
So that the same check (btrfs cloner program presence) can be reused
by other tests.

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: David Disseldorp <ddiss@suse.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-05-27 12:07:36 +10:00
Eryu Guan caca5818a9 xfs/005: filter _scratch_mount output to match golden image
Failure message of mount has been changed since util-linux v2.21, to
something like:

mount: mount /dev/sda5 on /mnt/scratch failed: Structure needs cleaning

Filter the output to match the golden image for newer mount binary so
that both old and new version of mount work correctly.

Signed-off-by: Eryu Guan <eguan@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-05-27 12:07:17 +10:00
Eryu Guan 82afae27d6 generic: new ENOSPC regression test
Run 8 processes writing 1k files to seperate files in seperate dirs to
hit ENOSPC on small fs with little free space. Loop for 100 iterations.

Regression test for
34cf865 ext4: fix deadlock when writing in ENOSPC conditions

Signed-off-by: Eryu Guan <eguan@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-05-27 12:07:17 +10:00
Filipe David Borba Manana e7dd9f1ce0 btrfs: add test for btrfs send with long paths
Regression test for btrfs send where long paths (exceeding 230 characters)
made send produce paths with random characters from a memory buffer returned
by kmalloc, as send forgot to populate the new buffer with the path string.

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

   Btrfs: send, fix corrupted path strings for long paths

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-05-27 12:07:03 +10:00
Brian Foster 9b7f704ca3 config: make sure tests check for loop device support
Several tests happen to make use of loop device support without the
requisite pre-test checks. This results in spurious failures for systems
that might not have loop device support. Add _require_loop checks to
shared/298, xfs/206 and xfs/259.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-05-15 11:37:55 +10:00
Filipe David Borba Manana fe3fcf26d2 btrfs: add regression test for send with extrefs
Regression for btrfs send when an inode only has extended references
associated to it (no regular references present). This used to cause
incorrect access to a b+tree leaf, where an extended reference item
was accessed as if it were a regular reference item, causing unexpected
and unpredictable behaviour such as producing a random/weird path string
or a crash.

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

   Btrfs: send, fix incorrect ref access when using extrefs

Signed-off-by: Filipe David Borba Manana <fdmanana@gmail.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-05-15 11:37:54 +10:00
Brian Foster 49a4f924cd xfs/013: use killall -9 and wait in _cleanup()
Kill any lingering fsstress processes and wait properly should we abort
the test. This prevents the workload from inadvertently affecting
subsequent tests.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-05-15 11:37:49 +10:00
Jeff Layton 85a011724a loggen: fix build vs. newer xfsprogs headers
v2: just include xfs/libxfs.h for the conftest prerequisites

commit cc085d770adb in xfsprogs removed some header files that are
included by loggen.c. Add an autoconf test that checks to see whether
xfs_log_format.h is present. If it is, include that instead of the
deprecated headers and add an alias for XFS_TRANS_MAGIC since that
value no longer exists.

With this patch, xfstests builds on both f20 and rawhide (f21) boxes.

Signed-off-by: Jeff Layton <jlayton@poochiereds.net>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-05-15 11:34:56 +10:00
Jeff Layton 10fd79a6fb locktest: add a F_GETLK vs. openmode test
POSIX says that you're allowed to do F_GETLK for a F_WRLCK on an
O_RDONLY file description.

Signed-off-by: Jeff Layton <jlayton@poochiereds.net>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-05-13 15:30:24 +10:00
Jeff Layton fe7056d6d3 locktest: consolidate do_lock and do_unlock, and add ability to F_GETLK
Eliminate do_unlock as it's just cut-and-paste of do_lock (down to the
bad stderr fprintf). Fix the debug messages to print the cmd and type,
and add the ability to do a WRTEST and RDTEST.

Signed-off-by: Jeff Layton <jlayton@poochiereds.net>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-05-13 15:30:23 +10:00
Jeff Layton ece564a735 locktest: set f_fd to INVALID_HANDLE on close
Ensure that the fd is marked invalid after close. Also, the "closed"
and "reopen" variables are always set to 0. Remove them.

Signed-off-by: Jeff Layton <jlayton@poochiereds.net>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-05-13 15:30:23 +10:00
Jeff Layton 2baab36b59 locktest: don't assume that F_OPEN should use O_RDWR
In a later patch, I'll be adding a test for F_GETLK that will require
that we open the file with a different f_mode. Change do_open not to
assume that the it needs to open the file O_RDWR.

While we're at it, fix a bug in do_open. Just because we pass in '0' for
the flags, doesn't mean that this is the initial open.  Move the exit(1)
for that case to the caller.

Signed-off-by: Jeff Layton <jlayton@poochiereds.net>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-05-13 15:30:18 +10:00
Josef Bacik b6689ad6a5 config: fix selinux context handling
With the new config stuff we lost the selinux options being set for systems with
selinux turned on.  We want the selinux context set all the time, wether we
provide a MOUNT_OPTIONS value or not, so take this logic out of _mount_opts()
and just put it in the body of common/config

Signed-off-by: Josef Bacik <jbacik@fb.com>
Reviewed-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-05-13 15:30:15 +10:00