From: "Darrick J. Wong" <djwong@kernel.org>
To: Luis Chamberlain <mcgrof@kernel.org>
Cc: patches@lists.linux.dev, fstests@vger.kernel.org,
linux-xfs@vger.kernel.org, linux-mm@kvack.org,
linux-fsdevel@vger.kernel.org, akpm@linux-foundation.org,
ziy@nvidia.com, vbabka@suse.cz, seanjc@google.com,
willy@infradead.org, david@redhat.com, hughd@google.com,
linmiaohe@huawei.com, muchun.song@linux.dev, osalvador@suse.de,
p.raghav@samsung.com, da.gomez@samsung.com, hare@suse.de,
john.g.garry@oracle.com
Subject: Re: [PATCH 1/5] common: move mread() to generic helper _mread()
Date: Tue, 11 Jun 2024 07:28:29 -0700 [thread overview]
Message-ID: <20240611142829.GG52977@frogsfrogsfrogs> (raw)
In-Reply-To: <20240611030203.1719072-2-mcgrof@kernel.org>
On Mon, Jun 10, 2024 at 08:01:58PM -0700, Luis Chamberlain wrote:
> We want a shared way to use mmap in a way that we can test
> for the SIGBUS, provide a shared routine which other tests can
> leverage.
>
> Suggested-by: "Darrick J. Wong" <djwong@kernel.org>
> Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
Looks ok,
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
--D
> ---
> common/rc | 28 ++++++++++++++++++++++++++++
> tests/generic/574 | 36 ++++--------------------------------
> 2 files changed, 32 insertions(+), 32 deletions(-)
>
> diff --git a/common/rc b/common/rc
> index 163041fea5b9..fa7942809d6c 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -52,6 +52,34 @@ _pwrite_byte() {
> $XFS_IO_PROG $xfs_io_args -f -c "pwrite -S $pattern $offset $len" "$file"
> }
>
> +_round_up_to_page_boundary()
> +{
> + local n=$1
> + local page_size=$(_get_page_size)
> +
> + echo $(( (n + page_size - 1) & ~(page_size - 1) ))
> +}
> +
> +_mread()
> +{
> + local file=$1
> + local offset=$2
> + local length=$3
> + local map_len=$(_round_up_to_page_boundary $(_get_filesize $file))
> +
> + # Some callers expect xfs_io to crash with SIGBUS due to the mread,
> + # causing the shell to print "Bus error" to stderr. To allow this
> + # message to be redirected, execute xfs_io in a new shell instance.
> + # However, for this to work reliably, we also need to prevent the new
> + # shell instance from optimizing out the fork and directly exec'ing
> + # xfs_io. The easiest way to do that is to append 'true' to the
> + # commands, so that xfs_io is no longer the last command the shell sees.
> + # Don't let it write core files to the filesystem.
> + bash -c "trap '' SIGBUS; ulimit -c 0; $XFS_IO_PROG -r $file \
> + -c 'mmap -r 0 $map_len' \
> + -c 'mread -v $offset $length'; true"
> +}
> +
> # mmap-write a byte into a range of a file
> _mwrite_byte() {
> local pattern="$1"
> diff --git a/tests/generic/574 b/tests/generic/574
> index cb42baaa67aa..d44c23e5abc2 100755
> --- a/tests/generic/574
> +++ b/tests/generic/574
> @@ -52,34 +52,6 @@ setup_zeroed_file()
> cmp $fsv_orig_file $fsv_file
> }
>
> -round_up_to_page_boundary()
> -{
> - local n=$1
> - local page_size=$(_get_page_size)
> -
> - echo $(( (n + page_size - 1) & ~(page_size - 1) ))
> -}
> -
> -mread()
> -{
> - local file=$1
> - local offset=$2
> - local length=$3
> - local map_len=$(round_up_to_page_boundary $(_get_filesize $file))
> -
> - # Some callers expect xfs_io to crash with SIGBUS due to the mread,
> - # causing the shell to print "Bus error" to stderr. To allow this
> - # message to be redirected, execute xfs_io in a new shell instance.
> - # However, for this to work reliably, we also need to prevent the new
> - # shell instance from optimizing out the fork and directly exec'ing
> - # xfs_io. The easiest way to do that is to append 'true' to the
> - # commands, so that xfs_io is no longer the last command the shell sees.
> - # Don't let it write core files to the filesystem.
> - bash -c "trap '' SIGBUS; ulimit -c 0; $XFS_IO_PROG -r $file \
> - -c 'mmap -r 0 $map_len' \
> - -c 'mread -v $offset $length'; true"
> -}
> -
> corruption_test()
> {
> local block_size=$1
> @@ -142,7 +114,7 @@ corruption_test()
> fi
>
> # Reading the full file via mmap should fail.
> - mread $fsv_file 0 $file_len >/dev/null 2>$tmp.err
> + _mread $fsv_file 0 $file_len >/dev/null 2>$tmp.err
> if ! grep -q 'Bus error' $tmp.err; then
> echo "Didn't see SIGBUS when reading file via mmap"
> cat $tmp.err
> @@ -150,7 +122,7 @@ corruption_test()
>
> # Reading just the corrupted part via mmap should fail.
> if ! $is_merkle_tree; then
> - mread $fsv_file $zap_offset $zap_len >/dev/null 2>$tmp.err
> + _mread $fsv_file $zap_offset $zap_len >/dev/null 2>$tmp.err
> if ! grep -q 'Bus error' $tmp.err; then
> echo "Didn't see SIGBUS when reading corrupted part via mmap"
> cat $tmp.err
> @@ -174,10 +146,10 @@ corrupt_eof_block_test()
> head -c $zap_len /dev/zero | tr '\0' X \
> | _fsv_scratch_corrupt_bytes $fsv_file $file_len
>
> - mread $fsv_file $file_len $zap_len >$tmp.out 2>$tmp.err
> + _mread $fsv_file $file_len $zap_len >$tmp.out 2>$tmp.err
>
> head -c $file_len /dev/zero >$tmp.zeroes
> - mread $tmp.zeroes $file_len $zap_len >$tmp.zeroes_out
> + _mread $tmp.zeroes $file_len $zap_len >$tmp.zeroes_out
>
> grep -q 'Bus error' $tmp.err || diff $tmp.out $tmp.zeroes_out
> }
> --
> 2.43.0
>
>
next prev parent reply other threads:[~2024-06-11 14:28 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-11 3:01 [PATCH 0/5] fstests: add some new LBS inspired tests Luis Chamberlain
2024-06-11 3:01 ` [PATCH 1/5] common: move mread() to generic helper _mread() Luis Chamberlain
2024-06-11 14:28 ` Darrick J. Wong [this message]
2024-06-11 3:01 ` [PATCH 2/5] fstests: add mmap page boundary tests Luis Chamberlain
2024-06-11 16:48 ` Darrick J. Wong
2024-06-11 18:10 ` Luis Chamberlain
2024-06-11 18:46 ` Darrick J. Wong
2024-06-11 20:29 ` Luis Chamberlain
2024-06-12 8:06 ` Zorro Lang
2024-06-13 21:05 ` Luis Chamberlain
2024-06-11 3:02 ` [PATCH 3/5] fstests: add fsstress + compaction test Luis Chamberlain
2024-06-11 14:48 ` Darrick J. Wong
2024-06-12 8:00 ` Zorro Lang
2024-06-13 21:10 ` Luis Chamberlain
2024-06-11 3:02 ` [PATCH 4/5] _require_debugfs(): simplify and fix for debian Luis Chamberlain
2024-06-11 14:35 ` Darrick J. Wong
2024-06-12 7:51 ` Zorro Lang
2024-06-11 3:02 ` [PATCH 5/5] fstests: add stress truncation + writeback test Luis Chamberlain
2024-06-11 14:45 ` Darrick J. Wong
2024-06-11 18:15 ` Luis Chamberlain
2024-06-11 18:29 ` Darrick J. Wong
2024-06-11 18:59 ` Luis Chamberlain
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=20240611142829.GG52977@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=da.gomez@samsung.com \
--cc=david@redhat.com \
--cc=fstests@vger.kernel.org \
--cc=hare@suse.de \
--cc=hughd@google.com \
--cc=john.g.garry@oracle.com \
--cc=linmiaohe@huawei.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-xfs@vger.kernel.org \
--cc=mcgrof@kernel.org \
--cc=muchun.song@linux.dev \
--cc=osalvador@suse.de \
--cc=p.raghav@samsung.com \
--cc=patches@lists.linux.dev \
--cc=seanjc@google.com \
--cc=vbabka@suse.cz \
--cc=willy@infradead.org \
--cc=ziy@nvidia.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.