From: "Darrick J. Wong" <djwong@kernel.org>
To: Eryu Guan <guan@eryu.me>
Cc: guaneryu@gmail.com, linux-xfs@vger.kernel.org, fstests@vger.kernel.org
Subject: Re: [PATCH 2/8] common/xfs: refactor commands to select a particular xfs backing device
Date: Sun, 16 May 2021 13:34:37 -0700 [thread overview]
Message-ID: <20210516203437.GS9675@magnolia> (raw)
In-Reply-To: <YKE/I0HE+2MNSCCG@desktop>
On Sun, May 16, 2021 at 11:49:55PM +0800, Eryu Guan wrote:
> On Tue, May 11, 2021 at 07:01:51PM -0700, Darrick J. Wong wrote:
> > From: Darrick J. Wong <djwong@kernel.org>
> >
> > Refactor all the places where we try to force new file data allocations
> > to a specific xfs backing device so that we don't end up open-coding the
> > same xfs_io command lines over and over.
> >
> > Signed-off-by: Darrick J. Wong <djwong@kernel.org>
> > ---
> > common/populate | 2 +-
> > common/xfs | 25 +++++++++++++++++++++++++
> > tests/generic/223 | 3 ++-
> > tests/generic/449 | 2 +-
> > tests/xfs/004 | 2 +-
>
> > tests/xfs/088 | 1 +
> > tests/xfs/089 | 1 +
> > tests/xfs/091 | 1 +
> > tests/xfs/120 | 1 +
> > tests/xfs/130 | 1 +
>
> I think above updates should be in a separate patch.
Why?
--D
> Thanks,
> Eryu
>
> > tests/xfs/146 | 2 +-
> > tests/xfs/147 | 2 +-
> > tests/xfs/235 | 1 +
> > tests/xfs/272 | 2 +-
> > tests/xfs/318 | 2 +-
> > tests/xfs/431 | 4 ++--
> > tests/xfs/521 | 2 +-
> > tests/xfs/528 | 2 +-
> > tests/xfs/532 | 2 +-
> > tests/xfs/533 | 2 +-
> > tests/xfs/538 | 2 +-
> > 21 files changed, 47 insertions(+), 15 deletions(-)
> >
> >
> > diff --git a/common/populate b/common/populate
> > index d484866a..e1704b10 100644
> > --- a/common/populate
> > +++ b/common/populate
> > @@ -162,7 +162,7 @@ _scratch_xfs_populate() {
> > # Clear the rtinherit flag on the root directory so that files are
> > # always created on the data volume regardless of MKFS_OPTIONS. We can
> > # set the realtime flag when needed.
> > - $XFS_IO_PROG -c 'chattr -t' $SCRATCH_MNT
> > + _scratch_xfs_force_bdev data $SCRATCH_MNT
> >
> > blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")"
> > dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')"
> > diff --git a/common/xfs b/common/xfs
> > index 5cd7b35c..49bd6c31 100644
> > --- a/common/xfs
> > +++ b/common/xfs
> > @@ -194,6 +194,31 @@ _xfs_get_file_block_size()
> > $XFS_INFO_PROG "$path" | grep realtime | sed -e 's/^.*extsz=\([0-9]*\).*$/\1/g'
> > }
> >
> > +# Set or clear the realtime status of every supplied path. The first argument
> > +# is either 'data' or 'realtime'. All other arguments should be paths to
> > +# existing directories or empty regular files.
> > +#
> > +# For each directory, each file subsequently created will target the given
> > +# device for file data allocations. For each empty regular file, each
> > +# subsequent file data allocation will be on the given device.
> > +_scratch_xfs_force_bdev()
> > +{
> > + local device="$1"
> > + shift
> > + local chattr_arg=""
> > +
> > + case "$device" in
> > + "data") chattr_arg="-t";;
> > + "realtime") chattr_arg="+t";;
> > + *)
> > + echo "${device}: Don't know what device this is?"
> > + return 1
> > + ;;
> > + esac
> > +
> > + $XFS_IO_PROG -c "chattr $chattr_arg" "$@"
> > +}
> > +
> > _xfs_get_fsxattr()
> > {
> > local field="$1"
> > diff --git a/tests/generic/223 b/tests/generic/223
> > index f6393293..0df84c2b 100755
> > --- a/tests/generic/223
> > +++ b/tests/generic/223
> > @@ -46,7 +46,8 @@ for SUNIT_K in 8 16 32 64 128; do
> > # This test checks for stripe alignments of space allocations on the
> > # filesystem. Make sure all files get created on the main device,
> > # which for XFS means no rt files.
> > - test "$FSTYP" = "xfs" && $XFS_IO_PROG -c 'chattr -t' $SCRATCH_MNT
> > + test "$FSTYP" = "xfs" && \
> > + _scratch_xfs_force_bdev data $SCRATCH_MNT
> >
> > for SIZE_MULT in 1 2 8 64 256; do
> > let SIZE=$SIZE_MULT*$SUNIT_BYTES
> > diff --git a/tests/generic/449 b/tests/generic/449
> > index 5fd15367..9035b705 100755
> > --- a/tests/generic/449
> > +++ b/tests/generic/449
> > @@ -46,7 +46,7 @@ _scratch_mount || _fail "mount failed"
> > # This is a test of xattr behavior when we run out of disk space for xattrs,
> > # so make sure the pwrite goes to the data device and not the rt volume.
> > test "$FSTYP" = "xfs" && \
> > - $XFS_IO_PROG -c 'chattr -t' $SCRATCH_MNT
> > + _scratch_xfs_force_bdev data $SCRATCH_MNT
> >
> > TFILE=$SCRATCH_MNT/testfile.$seq
> >
> > diff --git a/tests/xfs/004 b/tests/xfs/004
> > index 7633071c..b3a00fb6 100755
> > --- a/tests/xfs/004
> > +++ b/tests/xfs/004
> > @@ -31,7 +31,7 @@ _populate_scratch()
> > # This test looks at specific behaviors of the xfs_db freesp command,
> > # which reports on the contents of the free space btrees for the data
> > # device. Don't let anything get created on the realtime volume.
> > - $XFS_IO_PROG -c 'chattr -t' $SCRATCH_MNT
> > + _scratch_xfs_force_bdev data $SCRATCH_MNT
> > dd if=/dev/zero of=$SCRATCH_MNT/foo count=200 bs=4096 >/dev/null 2>&1 &
> > dd if=/dev/zero of=$SCRATCH_MNT/goo count=400 bs=4096 >/dev/null 2>&1 &
> > dd if=/dev/zero of=$SCRATCH_MNT/moo count=800 bs=4096 >/dev/null 2>&1 &
> > diff --git a/tests/xfs/088 b/tests/xfs/088
> > index fe621d0a..62360ca8 100755
> > --- a/tests/xfs/088
> > +++ b/tests/xfs/088
> > @@ -48,6 +48,7 @@ _scratch_mkfs_xfs > /dev/null
> > echo "+ mount fs image"
> > _scratch_mount
> > blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")"
> > +_scratch_xfs_force_bdev data $SCRATCH_MNT
> >
> > echo "+ make some files"
> > mkdir -p "${TESTDIR}"
> > diff --git a/tests/xfs/089 b/tests/xfs/089
> > index 3339ff63..79167a57 100755
> > --- a/tests/xfs/089
> > +++ b/tests/xfs/089
> > @@ -48,6 +48,7 @@ _scratch_mkfs_xfs > /dev/null
> > echo "+ mount fs image"
> > _scratch_mount
> > blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")"
> > +_scratch_xfs_force_bdev data $SCRATCH_MNT
> >
> > echo "+ make some files"
> > mkdir -p "${TESTDIR}"
> > diff --git a/tests/xfs/091 b/tests/xfs/091
> > index 9304849d..db6bb0b2 100755
> > --- a/tests/xfs/091
> > +++ b/tests/xfs/091
> > @@ -48,6 +48,7 @@ _scratch_mkfs_xfs > /dev/null
> > echo "+ mount fs image"
> > _scratch_mount
> > blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")"
> > +_scratch_xfs_force_bdev data $SCRATCH_MNT
> >
> > echo "+ make some files"
> > mkdir -p "${TESTDIR}"
> > diff --git a/tests/xfs/120 b/tests/xfs/120
> > index 59ac0433..9fcce9ee 100755
> > --- a/tests/xfs/120
> > +++ b/tests/xfs/120
> > @@ -47,6 +47,7 @@ echo "+ mount fs image"
> > _scratch_mount
> > blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")"
> > nr="$((blksz * 2 / 16))"
> > +_scratch_xfs_force_bdev data $SCRATCH_MNT
> >
> > echo "+ make some files"
> > $XFS_IO_PROG -f -c "pwrite -S 0x62 0 $((blksz * nr))" -c 'fsync' "${SCRATCH_MNT}/bigfile" >> $seqres.full
> > diff --git a/tests/xfs/130 b/tests/xfs/130
> > index 9fec009f..b4404c5d 100755
> > --- a/tests/xfs/130
> > +++ b/tests/xfs/130
> > @@ -43,6 +43,7 @@ echo "+ mount fs image"
> > _scratch_mount
> > blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")"
> > agcount="$(_xfs_mount_agcount $SCRATCH_MNT)"
> > +_scratch_xfs_force_bdev data $SCRATCH_MNT
> >
> > echo "+ make some files"
> > _pwrite_byte 0x62 0 $((blksz * 64)) "${SCRATCH_MNT}/file0" >> "$seqres.full"
> > diff --git a/tests/xfs/146 b/tests/xfs/146
> > index 8f85024d..a62b8429 100755
> > --- a/tests/xfs/146
> > +++ b/tests/xfs/146
> > @@ -78,7 +78,7 @@ _scratch_mkfs -r size=$rtsize >> $seqres.full
> > _scratch_mount >> $seqres.full
> >
> > # Make sure the root directory has rtinherit set so our test file will too
> > -$XFS_IO_PROG -c 'chattr +t' $SCRATCH_MNT
> > +_scratch_xfs_force_bdev realtime $SCRATCH_MNT
> >
> > # Allocate some stuff at the start, to force the first falloc of the ouch file
> > # to happen somewhere in the middle of the rt volume
> > diff --git a/tests/xfs/147 b/tests/xfs/147
> > index da962f96..0071f5c3 100755
> > --- a/tests/xfs/147
> > +++ b/tests/xfs/147
> > @@ -50,7 +50,7 @@ rextblks=$((rextsize / blksz))
> > echo "blksz $blksz rextsize $rextsize rextblks $rextblks" >> $seqres.full
> >
> > # Make sure the root directory has rtinherit set so our test file will too
> > -$XFS_IO_PROG -c 'chattr +t' $SCRATCH_MNT
> > +_scratch_xfs_force_bdev realtime $SCRATCH_MNT
> >
> > sz=$((rextsize * 100))
> > range="$((blksz * 3)) $blksz"
> > diff --git a/tests/xfs/235 b/tests/xfs/235
> > index 1ed19424..553a3bc8 100755
> > --- a/tests/xfs/235
> > +++ b/tests/xfs/235
> > @@ -41,6 +41,7 @@ echo "+ mount fs image"
> > _scratch_mount
> > blksz=$(stat -f -c '%s' ${SCRATCH_MNT})
> > agcount=$(_xfs_mount_agcount $SCRATCH_MNT)
> > +_scratch_xfs_force_bdev data $SCRATCH_MNT
> >
> > echo "+ make some files"
> > _pwrite_byte 0x62 0 $((blksz * 64)) ${SCRATCH_MNT}/file0 >> $seqres.full
> > diff --git a/tests/xfs/272 b/tests/xfs/272
> > index 6c0fede5..2848848d 100755
> > --- a/tests/xfs/272
> > +++ b/tests/xfs/272
> > @@ -38,7 +38,7 @@ _scratch_mkfs > "$seqres.full" 2>&1
> > _scratch_mount
> >
> > # Make sure everything is on the data device
> > -$XFS_IO_PROG -c 'chattr -t' $SCRATCH_MNT
> > +_scratch_xfs_force_bdev data $SCRATCH_MNT
> >
> > _pwrite_byte 0x80 0 737373 $SCRATCH_MNT/urk >> $seqres.full
> > sync
> > diff --git a/tests/xfs/318 b/tests/xfs/318
> > index 07375b1f..823f3e6c 100755
> > --- a/tests/xfs/318
> > +++ b/tests/xfs/318
> > @@ -44,7 +44,7 @@ _scratch_mount >> $seqres.full
> >
> > # This test depends on specific behaviors of the data device, so create all
> > # files on it.
> > -$XFS_IO_PROG -c 'chattr -t' $SCRATCH_MNT
> > +_scratch_xfs_force_bdev data $SCRATCH_MNT
> >
> > echo "Create files"
> > touch $SCRATCH_MNT/file1
> > diff --git a/tests/xfs/431 b/tests/xfs/431
> > index e67906dc..dd634ed6 100755
> > --- a/tests/xfs/431
> > +++ b/tests/xfs/431
> > @@ -47,7 +47,7 @@ _scratch_mount
> >
> > # Set realtime inherit flag on scratch mount, suppress output
> > # as this may simply error out on future kernels
> > -$XFS_IO_PROG -c 'chattr +t' $SCRATCH_MNT &> /dev/null
> > +_scratch_xfs_force_bdev realtime $SCRATCH_MNT &> /dev/null
> >
> > # Check if 't' is actually set, as xfs_io returns 0 even when it fails to set
> > # an attribute. And erroring out here is fine, this would be desired behavior
> > @@ -60,7 +60,7 @@ if $XFS_IO_PROG -c 'lsattr' $SCRATCH_MNT | grep -q 't'; then
> > # Remove the testfile and rt inherit flag after we are done or
> > # xfs_repair will fail.
> > rm -f $SCRATCH_MNT/testfile
> > - $XFS_IO_PROG -c 'chattr -t' $SCRATCH_MNT | tee -a $seqres.full 2>&1
> > + _scratch_xfs_force_bdev data $SCRATCH_MNT | tee -a $seqres.full 2>&1
> > fi
> >
> > # success, all done
> > diff --git a/tests/xfs/521 b/tests/xfs/521
> > index b8026d45..64155662 100755
> > --- a/tests/xfs/521
> > +++ b/tests/xfs/521
> > @@ -55,7 +55,7 @@ testdir=$SCRATCH_MNT/test-$seq
> > mkdir $testdir
> >
> > echo "Check rt volume stats"
> > -$XFS_IO_PROG -c 'chattr +t' $testdir
> > +_scratch_xfs_force_bdev realtime $testdir
> > $XFS_INFO_PROG $SCRATCH_MNT >> $seqres.full
> > before=$(stat -f -c '%b' $testdir)
> >
> > diff --git a/tests/xfs/528 b/tests/xfs/528
> > index 7f98c5b8..4db4f513 100755
> > --- a/tests/xfs/528
> > +++ b/tests/xfs/528
> > @@ -77,7 +77,7 @@ test_ops() {
> > _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
> > + _scratch_xfs_force_bdev realtime $SCRATCH_MNT
> >
> > log "Test regular write, rextsize=$rextsize"
> > mk_file $SCRATCH_MNT/write $rextsize
> > diff --git a/tests/xfs/532 b/tests/xfs/532
> > index 560af586..1749d6ac 100755
> > --- a/tests/xfs/532
> > +++ b/tests/xfs/532
> > @@ -47,7 +47,7 @@ _scratch_mount >> $seqres.full
> >
> > # Disable realtime inherit flag (if any) on root directory so that space on data
> > # device gets fragmented rather than realtime device.
> > -$XFS_IO_PROG -c 'chattr -t' $SCRATCH_MNT
> > +_scratch_xfs_force_bdev data $SCRATCH_MNT
> >
> > bsize=$(_get_block_size $SCRATCH_MNT)
> >
> > diff --git a/tests/xfs/533 b/tests/xfs/533
> > index dd4cb4c4..b73097e1 100755
> > --- a/tests/xfs/533
> > +++ b/tests/xfs/533
> > @@ -58,7 +58,7 @@ _scratch_mount >> $seqres.full
> >
> > # Disable realtime inherit flag (if any) on root directory so that space on data
> > # device gets fragmented rather than realtime device.
> > -$XFS_IO_PROG -c 'chattr -t' $SCRATCH_MNT
> > +_scratch_xfs_force_bdev data $SCRATCH_MNT
> >
> > echo "Consume free space"
> > fillerdir=$SCRATCH_MNT/fillerdir
> > diff --git a/tests/xfs/538 b/tests/xfs/538
> > index 97273b88..deb43d7c 100755
> > --- a/tests/xfs/538
> > +++ b/tests/xfs/538
> > @@ -44,7 +44,7 @@ _scratch_mount >> $seqres.full
> >
> > # Disable realtime inherit flag (if any) on root directory so that space on data
> > # device gets fragmented rather than realtime device.
> > -$XFS_IO_PROG -c 'chattr -t' $SCRATCH_MNT
> > +_scratch_xfs_force_bdev data $SCRATCH_MNT
> >
> > bsize=$(_get_file_block_size $SCRATCH_MNT)
> >
> >
next prev parent reply other threads:[~2021-05-16 20:34 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-12 2:01 [PATCHSET 0/8] fstests: miscellaneous fixes Darrick J. Wong
2021-05-12 2:01 ` [PATCH 1/8] xfs/122: add entries for structures added to 5.13 Darrick J. Wong
2021-05-12 2:01 ` [PATCH 2/8] common/xfs: refactor commands to select a particular xfs backing device Darrick J. Wong
2021-05-16 15:49 ` Eryu Guan
2021-05-16 20:34 ` Darrick J. Wong [this message]
2021-05-19 3:03 ` Eryu Guan
2021-05-19 20:46 ` Darrick J. Wong
2021-05-12 2:01 ` [PATCH 3/8] xfs: fix old fuzz test invocations of xfs_repair Darrick J. Wong
2021-05-12 2:02 ` [PATCH 4/8] xfs/117: fix fragility in this fuzz test Darrick J. Wong
2021-05-12 2:02 ` [PATCH 5/8] common: always pass -f to $DUMP_COMPRESSOR Darrick J. Wong
2021-05-12 2:02 ` [PATCH 6/8] fsx/fsstress: round blocksize properly Darrick J. Wong
2021-05-12 2:02 ` [PATCH 7/8] fsx: fix backwards parameters in complaint about overly long copy Darrick J. Wong
2021-05-12 2:02 ` [PATCH 8/8] xfs/178: fix mkfs success test Darrick J. Wong
2021-05-16 15:54 ` Eryu Guan
2021-05-19 23:20 ` Darrick J. Wong
2021-05-16 15:58 ` [PATCHSET 0/8] fstests: miscellaneous fixes Eryu Guan
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=20210516203437.GS9675@magnolia \
--to=djwong@kernel.org \
--cc=fstests@vger.kernel.org \
--cc=guan@eryu.me \
--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.