From: "Darrick J. Wong" <darrick.wong@oracle.com>
To: darrick.wong@oracle.com, guaneryu@gmail.com
Cc: linux-xfs@vger.kernel.org, fstests@vger.kernel.org
Subject: [PATCH 1/7] xfs: test fallocate ops when rt extent size is and isn't a power of 2
Date: Tue, 27 Oct 2020 12:02:37 -0700 [thread overview]
Message-ID: <160382535741.1203387.10647004373989609905.stgit@magnolia> (raw)
In-Reply-To: <160382535113.1203387.16777876271740782481.stgit@magnolia>
From: Darrick J. Wong <darrick.wong@oracle.com>
Make sure that fallocate works when the rt extent size is and isn't a
power of 2.
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
tests/xfs/763 | 181 +++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/xfs/763.out | 91 +++++++++++++++++++++++++++
tests/xfs/group | 1
3 files changed, 273 insertions(+)
create mode 100755 tests/xfs/763
create mode 100644 tests/xfs/763.out
diff --git a/tests/xfs/763 b/tests/xfs/763
new file mode 100755
index 00000000..4b0b08a0
--- /dev/null
+++ b/tests/xfs/763
@@ -0,0 +1,181 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2020, Oracle and/or its affiliates. All Rights Reserved.
+#
+# FS QA Test No. 763
+#
+# Make sure that regular fallocate functions work ok when the realtime extent
+# size is and isn't a power of 2.
+#
+seq=`basename $0`
+seqres=$RESULT_DIR/$seq
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+ cd /
+ _scratch_unmount >> $seqres.full 2>&1
+ test -e "$rtdev" && losetup -d $rtdev >> $seqres.full 2>&1
+ rm -f $tmp.* $TEST_DIR/$seq.rtvol
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs xfs
+_require_xfs_io_command "fpunch"
+_require_xfs_io_command "fzero"
+_require_xfs_io_command "fcollapse"
+_require_xfs_io_command "finsert"
+# Note that we don't _require_realtime because we synthesize a rt volume
+# below. This also means we cannot run the post-test check.
+_require_scratch_nocheck
+
+log() {
+ echo "$@" | tee -a $seqres.full
+}
+
+mk_file() {
+ local file="$1"
+ local rextsize="$2"
+
+ $XFS_IO_PROG -f \
+ -c "pwrite -S 0x57 -b $rextsize 0 $rextsize" \
+ -c "pwrite -S 0x58 -b $rextsize $rextsize $rextsize" \
+ -c "pwrite -S 0x59 -b $rextsize $((rextsize * 2)) $rextsize" \
+ -c fsync \
+ "$file" >> $seqres.full
+}
+
+check_file() {
+ filefrag -v "$1" >> $seqres.full
+ od -tx1 -Ad -c "$1" >> $seqres.full
+ md5sum "$1" | _filter_scratch | tee -a $seqres.full
+}
+
+test_ops() {
+ local rextsize=$1
+ local sz=$((rextsize * 3))
+ local unaligned_sz=65536
+ local unaligned_off=$((rextsize * 2 + unaligned_sz))
+ local lunaligned_sz=$((rextsize * 2))
+ local lunaligned_off=$unaligned_sz
+
+ log "Format rtextsize=$rextsize"
+ _scratch_unmount
+ _scratch_mkfs -r extsize=$rextsize >> $seqres.full
+ _scratch_mount || \
+ _notrun "Could not mount rextsize=$rextsize with synthetic rt volume"
+
+ # Force all files to be realtime files
+ $XFS_IO_PROG -c 'chattr +t' $SCRATCH_MNT
+
+ log "Test regular write, rextsize=$rextsize"
+ mk_file $SCRATCH_MNT/write $rextsize
+ check_file $SCRATCH_MNT/write
+
+ log "Test aligned falloc, rextsize=$rextsize"
+ $XFS_IO_PROG -f -c "falloc 0 $sz" $SCRATCH_MNT/falloc >> $seqres.full
+ check_file $SCRATCH_MNT/falloc
+
+ log "Test aligned fcollapse, rextsize=$rextsize"
+ mk_file $SCRATCH_MNT/collapse $rextsize
+ $XFS_IO_PROG -f -c "fcollapse $rextsize $rextsize" $SCRATCH_MNT/collapse >> $seqres.full
+ check_file $SCRATCH_MNT/collapse
+
+ log "Test aligned finsert, rextsize=$rextsize"
+ mk_file $SCRATCH_MNT/insert $rextsize
+ $XFS_IO_PROG -f -c "finsert $rextsize $rextsize" $SCRATCH_MNT/insert >> $seqres.full
+ check_file $SCRATCH_MNT/insert
+
+ log "Test aligned fzero, rextsize=$rextsize"
+ mk_file $SCRATCH_MNT/zero $rextsize
+ $XFS_IO_PROG -f -c "fzero $rextsize $rextsize" $SCRATCH_MNT/zero >> $seqres.full
+ check_file $SCRATCH_MNT/zero
+
+ log "Test aligned fpunch, rextsize=$rextsize"
+ mk_file $SCRATCH_MNT/punch $rextsize
+ $XFS_IO_PROG -f -c "fpunch $rextsize $rextsize" $SCRATCH_MNT/punch >> $seqres.full
+ check_file $SCRATCH_MNT/punch
+
+ log "Test unaligned falloc, rextsize=$rextsize"
+ $XFS_IO_PROG -f -c "falloc $unaligned_off $unaligned_sz" $SCRATCH_MNT/ufalloc >> $seqres.full
+ check_file $SCRATCH_MNT/ufalloc
+
+ log "Test unaligned fcollapse, rextsize=$rextsize"
+ mk_file $SCRATCH_MNT/ucollapse $rextsize
+ $XFS_IO_PROG -f -c "fcollapse $unaligned_off $unaligned_sz" $SCRATCH_MNT/ucollapse >> $seqres.full
+ check_file $SCRATCH_MNT/ucollapse
+
+ log "Test unaligned finsert, rextsize=$rextsize"
+ mk_file $SCRATCH_MNT/uinsert $rextsize
+ $XFS_IO_PROG -f -c "finsert $unaligned_off $unaligned_sz" $SCRATCH_MNT/uinsert >> $seqres.full
+ check_file $SCRATCH_MNT/uinsert
+
+ log "Test unaligned fzero, rextsize=$rextsize"
+ mk_file $SCRATCH_MNT/uzero $rextsize
+ $XFS_IO_PROG -f -c "fzero $unaligned_off $unaligned_sz" $SCRATCH_MNT/uzero >> $seqres.full
+ check_file $SCRATCH_MNT/uzero
+
+ log "Test unaligned fpunch, rextsize=$rextsize"
+ mk_file $SCRATCH_MNT/upunch $rextsize
+ $XFS_IO_PROG -f -c "fpunch $unaligned_off $unaligned_sz" $SCRATCH_MNT/upunch >> $seqres.full
+ check_file $SCRATCH_MNT/upunch
+
+ log "Test large unaligned fzero, rextsize=$rextsize"
+ mk_file $SCRATCH_MNT/luzero $rextsize
+ $XFS_IO_PROG -f -c "fzero $lunaligned_off $lunaligned_sz" $SCRATCH_MNT/luzero >> $seqres.full
+ check_file $SCRATCH_MNT/luzero
+
+ log "Test large unaligned fpunch, rextsize=$rextsize"
+ mk_file $SCRATCH_MNT/lpunch $rextsize
+ $XFS_IO_PROG -f -c "fpunch $lunaligned_off $lunaligned_sz" $SCRATCH_MNT/lpunch >> $seqres.full
+ check_file $SCRATCH_MNT/lpunch
+
+ log "Remount and compare"
+ _scratch_cycle_mount
+ check_file $SCRATCH_MNT/write
+ check_file $SCRATCH_MNT/falloc
+ check_file $SCRATCH_MNT/collapse
+ check_file $SCRATCH_MNT/insert
+ check_file $SCRATCH_MNT/zero
+ check_file $SCRATCH_MNT/punch
+ check_file $SCRATCH_MNT/ufalloc
+ check_file $SCRATCH_MNT/ucollapse
+ check_file $SCRATCH_MNT/uinsert
+ check_file $SCRATCH_MNT/uzero
+ check_file $SCRATCH_MNT/upunch
+ check_file $SCRATCH_MNT/luzero
+ check_file $SCRATCH_MNT/lpunch
+
+ log "Check everything, rextsize=$rextsize"
+ _check_scratch_fs
+}
+
+echo "Create fake rt volume"
+truncate -s 400m $TEST_DIR/$seq.rtvol
+rtdev=$(_create_loop_device $TEST_DIR/$seq.rtvol)
+
+echo "Make sure synth rt volume works"
+export USE_EXTERNAL=yes
+export SCRATCH_RTDEV=$rtdev
+_scratch_mkfs > $seqres.full
+_scratch_mount || \
+ _notrun "Could not mount with synthetic rt volume"
+
+# power of two
+test_ops 262144
+
+# not a power of two
+test_ops 327680
+
+# success, all done
+status=0
+exit
diff --git a/tests/xfs/763.out b/tests/xfs/763.out
new file mode 100644
index 00000000..27c87bab
--- /dev/null
+++ b/tests/xfs/763.out
@@ -0,0 +1,91 @@
+QA output created by 763
+Create fake rt volume
+Make sure synth rt volume works
+Format rtextsize=262144
+Test regular write, rextsize=262144
+2dce060217cb2293dde96f7fdb3b9232 SCRATCH_MNT/write
+Test aligned falloc, rextsize=262144
+cb18a5d28e77522dfec6a6255bc3847e SCRATCH_MNT/falloc
+Test aligned fcollapse, rextsize=262144
+2e94746ab733025c21a9cae7d19c18d0 SCRATCH_MNT/collapse
+Test aligned finsert, rextsize=262144
+24e228d3d5f68b612eceec47f8416a7d SCRATCH_MNT/insert
+Test aligned fzero, rextsize=262144
+ecb6eb78ceb5c43ce86d523437b1fa95 SCRATCH_MNT/zero
+Test aligned fpunch, rextsize=262144
+ecb6eb78ceb5c43ce86d523437b1fa95 SCRATCH_MNT/punch
+Test unaligned falloc, rextsize=262144
+157e39521e47ad1c923a94edd69ad59c SCRATCH_MNT/ufalloc
+Test unaligned fcollapse, rextsize=262144
+fallocate: Invalid argument
+2dce060217cb2293dde96f7fdb3b9232 SCRATCH_MNT/ucollapse
+Test unaligned finsert, rextsize=262144
+fallocate: Invalid argument
+2dce060217cb2293dde96f7fdb3b9232 SCRATCH_MNT/uinsert
+Test unaligned fzero, rextsize=262144
+4402ca12d4425d7f94c9f536b756d924 SCRATCH_MNT/uzero
+Test unaligned fpunch, rextsize=262144
+4402ca12d4425d7f94c9f536b756d924 SCRATCH_MNT/upunch
+Test large unaligned fzero, rextsize=262144
+be43c5a0de0b510a6a573d682b0df726 SCRATCH_MNT/luzero
+Test large unaligned fpunch, rextsize=262144
+be43c5a0de0b510a6a573d682b0df726 SCRATCH_MNT/lpunch
+Remount and compare
+2dce060217cb2293dde96f7fdb3b9232 SCRATCH_MNT/write
+cb18a5d28e77522dfec6a6255bc3847e SCRATCH_MNT/falloc
+2e94746ab733025c21a9cae7d19c18d0 SCRATCH_MNT/collapse
+24e228d3d5f68b612eceec47f8416a7d SCRATCH_MNT/insert
+ecb6eb78ceb5c43ce86d523437b1fa95 SCRATCH_MNT/zero
+ecb6eb78ceb5c43ce86d523437b1fa95 SCRATCH_MNT/punch
+157e39521e47ad1c923a94edd69ad59c SCRATCH_MNT/ufalloc
+2dce060217cb2293dde96f7fdb3b9232 SCRATCH_MNT/ucollapse
+2dce060217cb2293dde96f7fdb3b9232 SCRATCH_MNT/uinsert
+4402ca12d4425d7f94c9f536b756d924 SCRATCH_MNT/uzero
+4402ca12d4425d7f94c9f536b756d924 SCRATCH_MNT/upunch
+be43c5a0de0b510a6a573d682b0df726 SCRATCH_MNT/luzero
+be43c5a0de0b510a6a573d682b0df726 SCRATCH_MNT/lpunch
+Check everything, rextsize=262144
+Format rtextsize=327680
+Test regular write, rextsize=327680
+dcc4a2d49adcac61bceae7db66611880 SCRATCH_MNT/write
+Test aligned falloc, rextsize=327680
+63a6c5a8b8da92e30cd0ef23c56d4f06 SCRATCH_MNT/falloc
+Test aligned fcollapse, rextsize=327680
+8bdd728a7a4af4ac18bbcbe39dea14d5 SCRATCH_MNT/collapse
+Test aligned finsert, rextsize=327680
+2b178c860f7bef4c0e55399be5172c5e SCRATCH_MNT/insert
+Test aligned fzero, rextsize=327680
+350defefe2530d8eb8d6a6772c81c206 SCRATCH_MNT/zero
+Test aligned fpunch, rextsize=327680
+350defefe2530d8eb8d6a6772c81c206 SCRATCH_MNT/punch
+Test unaligned falloc, rextsize=327680
+cb18a5d28e77522dfec6a6255bc3847e SCRATCH_MNT/ufalloc
+Test unaligned fcollapse, rextsize=327680
+fallocate: Invalid argument
+dcc4a2d49adcac61bceae7db66611880 SCRATCH_MNT/ucollapse
+Test unaligned finsert, rextsize=327680
+fallocate: Invalid argument
+dcc4a2d49adcac61bceae7db66611880 SCRATCH_MNT/uinsert
+Test unaligned fzero, rextsize=327680
+c9c7b8791f445ec8c5fbbf82cb26b33c SCRATCH_MNT/uzero
+Test unaligned fpunch, rextsize=327680
+c9c7b8791f445ec8c5fbbf82cb26b33c SCRATCH_MNT/upunch
+Test large unaligned fzero, rextsize=327680
+d8bf9fa95e4a7dd228d0b03768045db9 SCRATCH_MNT/luzero
+Test large unaligned fpunch, rextsize=327680
+d8bf9fa95e4a7dd228d0b03768045db9 SCRATCH_MNT/lpunch
+Remount and compare
+dcc4a2d49adcac61bceae7db66611880 SCRATCH_MNT/write
+63a6c5a8b8da92e30cd0ef23c56d4f06 SCRATCH_MNT/falloc
+8bdd728a7a4af4ac18bbcbe39dea14d5 SCRATCH_MNT/collapse
+2b178c860f7bef4c0e55399be5172c5e SCRATCH_MNT/insert
+350defefe2530d8eb8d6a6772c81c206 SCRATCH_MNT/zero
+350defefe2530d8eb8d6a6772c81c206 SCRATCH_MNT/punch
+cb18a5d28e77522dfec6a6255bc3847e SCRATCH_MNT/ufalloc
+dcc4a2d49adcac61bceae7db66611880 SCRATCH_MNT/ucollapse
+dcc4a2d49adcac61bceae7db66611880 SCRATCH_MNT/uinsert
+c9c7b8791f445ec8c5fbbf82cb26b33c SCRATCH_MNT/uzero
+c9c7b8791f445ec8c5fbbf82cb26b33c SCRATCH_MNT/upunch
+d8bf9fa95e4a7dd228d0b03768045db9 SCRATCH_MNT/luzero
+d8bf9fa95e4a7dd228d0b03768045db9 SCRATCH_MNT/lpunch
+Check everything, rextsize=327680
diff --git a/tests/xfs/group b/tests/xfs/group
index b89c0a4e..ffd18166 100644
--- a/tests/xfs/group
+++ b/tests/xfs/group
@@ -519,3 +519,4 @@
519 auto quick reflink
520 auto quick reflink
521 auto quick realtime growfs
+763 auto quick rw realtime
next prev parent reply other threads:[~2020-10-27 19:04 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-27 19:02 [PATCH 0/7] various: test xfs things fixed in 5.10 Darrick J. Wong
2020-10-27 19:02 ` Darrick J. Wong [this message]
2020-10-29 6:13 ` [PATCH 1/7] xfs: test fallocate ops when rt extent size is and isn't a power of 2 Chandan Babu R
2020-10-27 19:02 ` [PATCH 2/7] xfs: test regression in xfs_bmap_validate_extent Darrick J. Wong
2020-10-29 6:45 ` Chandan Babu R
2020-10-27 19:02 ` [PATCH 3/7] generic: test reflink and copy_file_range behavior with O_SYNC and FS_XFLAG_SYNC files Darrick J. Wong
2020-10-29 9:10 ` Chandan Babu R
2020-10-27 19:02 ` [PATCH 4/7] xfs: test rtalloc alignment and math errors Darrick J. Wong
2020-10-27 19:03 ` [PATCH 5/7] xfs: test mkfs min log size calculation w/ rt volumes Darrick J. Wong
2020-10-27 19:03 ` [PATCH 6/7] xfs: test quota softlimit warning functionality Darrick J. Wong
2020-10-27 19:03 ` [PATCH 7/7] xfs/122: fix test for xfs_attr_shortform_t conversion Darrick J. Wong
2020-10-29 10:12 ` Chandan Babu R
2020-10-29 11:17 ` Amir Goldstein
2020-10-29 18:17 ` Darrick J. Wong
2020-10-27 21:32 ` [PATCH 0/7] various: test xfs things fixed in 5.10 Theodore Y. Ts'o
2020-10-27 22:27 ` Darrick J. Wong
2020-11-11 0:43 Darrick J. Wong
2020-11-11 0:43 ` [PATCH 1/7] xfs: test fallocate ops when rt extent size is and isn't a power of 2 Darrick J. Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=160382535741.1203387.10647004373989609905.stgit@magnolia \
--to=darrick.wong@oracle.com \
--cc=fstests@vger.kernel.org \
--cc=guaneryu@gmail.com \
--cc=linux-xfs@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.