From: "Darrick J. Wong" <djwong@kernel.org>
To: Shiyang Ruan <ruansy.fnst@fujitsu.com>
Cc: fstests@vger.kernel.org
Subject: Re: [PATCH v2 4/5] generic/xxx: Add MMAP CoW test for 'delalloc' case
Date: Fri, 5 Nov 2021 09:42:37 -0700 [thread overview]
Message-ID: <20211105164237.GF24282@magnolia> (raw)
In-Reply-To: <20211105045222.157826-5-ruansy.fnst@fujitsu.com>
On Fri, Nov 05, 2021 at 12:52:21PM +0800, Shiyang Ruan wrote:
> Check what happens if we MMAP CoW blocks 2-4 of a page's worth of blocks when
> the second block is delalloc. (MMAP version of generic/222,227)
>
> Signed-off-by: Shiyang Ruan <ruansy.fnst@fujitsu.com>
> ---
> tests/generic/903 | 76 +++++++++++++++++++++++++++++++++++++++++++
> tests/generic/903.out | 6 ++++
> 2 files changed, 82 insertions(+)
> create mode 100755 tests/generic/903
> create mode 100644 tests/generic/903.out
>
> diff --git a/tests/generic/903 b/tests/generic/903
> new file mode 100755
> index 00000000..c55c4c71
> --- /dev/null
> +++ b/tests/generic/903
> @@ -0,0 +1,76 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +#
> +# FS QA Test No. xxx
> +#
> +# See what happens if we MMAP CoW blocks 2-4 of a page's worth of blocks when
> +# the second block is delalloc. (MMAP version of generic/222,227)
> +#
> +# This test is dependent on the system page size, so we cannot use md5 in
> +# the golden output; we can only compare to a check file.
> +#
> +. ./common/preamble
> +_begin_fstest auto quick clone
> +
> +# Override the default cleanup function.
> +_cleanup()
> +{
> + cd /
> + rm -rf $tmp.* $testdir
> +}
> +
> +# Import common functions.
> +. ./common/filter
> +. ./common/reflink
> +
> +# real QA test starts here
> +_require_scratch_reflink
> +_require_xfs_io_command "falloc"
> +
> +pagesz=$(getconf PAGE_SIZE)
> +blksz=$((pagesz / 4))
> +
> +echo "Format and mount"
> +_scratch_mkfs_blocksized $blksz > $seqres.full 2>&1
> +_scratch_mount >> $seqres.full 2>&1
> +
> +testdir=$SCRATCH_MNT/test-$seq
> +mkdir $testdir
> +
> +real_blksz=$(_get_file_block_size $testdir)
> +test $real_blksz != $blksz && _notrun "Failed to format with small blocksize."
> +
> +echo "Create the original files"
> +_pwrite_byte 0x61 0 $pagesz $testdir/file1 >> $seqres.full
> +
> +$XFS_IO_PROG -f -c "truncate $pagesz" $testdir/file2 >> $seqres.full
> +$XFS_IO_PROG -f -c "truncate $pagesz" $testdir/file2.chk >> $seqres.full
> +
> +_reflink_range $testdir/file1 $blksz $testdir/file2 $((blksz * 2)) $blksz >> $seqres.full
> +_pwrite_byte 0x61 $((blksz * 2)) $blksz $testdir/file2.chk >> $seqres.full
> +_scratch_cycle_mount
> +
> +echo "Compare files"
> +cmp -s $testdir/file1 $testdir/file2 && echo "file1 and file2 should not match."
> +cmp -s $testdir/file2 $testdir/file2.chk || echo "file2 and file2.chk don't match."
> +
> +echo "CoW and unmount"
> +_pwrite_byte 0x61 $blksz $blksz $testdir/file2 >> $seqres.full
> +_pwrite_byte 0x61 $blksz $blksz $testdir/file2.chk >> $seqres.full
> +
> +_pwrite_byte 0x61 $((blksz * 3)) $blksz $testdir/file2 >> $seqres.full
> +_pwrite_byte 0x61 $((blksz * 3)) $blksz $testdir/file2.chk >> $seqres.full
Does this need to check the block mapping to make sure that blocks 1 and
3 are actually delalloc reservations? There are certain xfs configs
(such as extent size hints) that disable delalloc.
--D
> +$XFS_IO_PROG -f -c "mmap 0 $pagesz" \
> + -c "mwrite -S 0x63 $((blksz + 17)) $((blksz * 3 - 34))" $testdir/file2 >> $seqres.full
> +$XFS_IO_PROG -f -c "mmap 0 $pagesz" \
> + -c "mwrite -S 0x63 $((blksz + 17)) $((blksz * 3 - 34))" $testdir/file2.chk >> $seqres.full
> +_scratch_cycle_mount
> +
> +echo "Compare files"
> +cmp -s $testdir/file1 $testdir/file2 && echo "file1 and file2 should not match."
> +cmp -s $testdir/file2 $testdir/file2.chk || echo "file2 and file2.chk don't match."
> +
> +# success, all done
> +status=0
> +exit
> diff --git a/tests/generic/903.out b/tests/generic/903.out
> new file mode 100644
> index 00000000..cfeeb11c
> --- /dev/null
> +++ b/tests/generic/903.out
> @@ -0,0 +1,6 @@
> +QA output created by 903
> +Format and mount
> +Create the original files
> +Compare files
> +CoW and unmount
> +Compare files
> --
> 2.33.0
>
>
>
next prev parent reply other threads:[~2021-11-05 16:42 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-05 4:52 [PATCH v2 0/5] generic: add a couple of MMAP CoW tests Shiyang Ruan
2021-11-05 4:52 ` [PATCH v2 1/5] generic/xxx: Add MMAP CoW test for 'regular' case Shiyang Ruan
2021-11-05 16:15 ` Darrick J. Wong
2021-11-05 4:52 ` [PATCH v2 2/5] generic/xxx: Add MMAP CoW test for 'unwritten' case Shiyang Ruan
2021-11-05 16:20 ` Darrick J. Wong
2021-11-08 6:18 ` Shiyang Ruan
2021-11-08 18:08 ` Darrick J. Wong
2021-11-05 4:52 ` [PATCH v2 3/5] generic/xxx: Add MMAP CoW test for 'hole' case Shiyang Ruan
2021-11-05 16:40 ` Darrick J. Wong
2021-11-08 6:33 ` Shiyang Ruan
2021-11-05 4:52 ` [PATCH v2 4/5] generic/xxx: Add MMAP CoW test for 'delalloc' case Shiyang Ruan
2021-11-05 16:42 ` Darrick J. Wong [this message]
2021-11-05 4:52 ` [PATCH v2 5/5] generic/xxx: Add MMAP CoW test for 'all' case Shiyang Ruan
2021-11-05 16:49 ` Darrick J. Wong
2021-11-07 13:31 ` [PATCH v2 0/5] generic: add a couple of MMAP CoW tests Eryu Guan
2021-11-08 6:25 ` Shiyang Ruan
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=20211105164237.GF24282@magnolia \
--to=djwong@kernel.org \
--cc=fstests@vger.kernel.org \
--cc=ruansy.fnst@fujitsu.com \
/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.