From: "Darrick J. Wong" <djwong@kernel.org>
To: Leah Rumancik <leah.rumancik@gmail.com>
Cc: fstests@vger.kernel.org, tytso@mit.edu
Subject: Re: [PATCH 1/2] check: try to fix the test device if it gets corrupted
Date: Fri, 14 Apr 2023 17:35:41 -0700 [thread overview]
Message-ID: <20230415003541.GB360885@frogsfrogsfrogs> (raw)
In-Reply-To: <20230414221133.3431400-1-leah.rumancik@gmail.com>
On Fri, Apr 14, 2023 at 03:11:32PM -0700, Leah Rumancik wrote:
> From: Theodore Ts'o <tytso@mit.edu>
>
> If the test device gets corrupted all subsequent tests will fail. To
> prevent this from causing all subsequent tests to be useless, try
> repair the file system on TEST_DEV if possible. We don't need to do
> this with the scratch device since that file system gets recreated
> each time anyway.
>
> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
> ---
> check | 7 ++++++-
> common/rc | 41 +++++++++++++++++++++++++++++++++++++++++
> common/xfs | 12 ++++++++++++
> 3 files changed, 59 insertions(+), 1 deletion(-)
>
> diff --git a/check b/check
> index 1a58a2b2..befbf465 100755
> --- a/check
> +++ b/check
> @@ -536,7 +536,12 @@ _check_filesystems()
> local ret=0
>
> if [ -f ${RESULT_DIR}/require_test ]; then
> - _check_test_fs || ret=1
> + if ! _check_test_fs ; then
> + ret=1
> + echo "Trying to repair broken TEST_DEV file system"
> + _repair_test_fs
> + _test_mount
> + fi
> rm -f ${RESULT_DIR}/require_test*
> else
> _test_unmount 2> /dev/null
> diff --git a/common/rc b/common/rc
> index 90749343..e8fc7e86 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -1199,6 +1199,47 @@ _repair_scratch_fs()
> esac
> }
>
> +_repair_test_fs()
> +{
> + case $FSTYP in
> + xfs)
> + _repair_xfs_test_fs "$@" >$tmp.repair 2>&1
> + res=$?
> + if [ "$res" -ne 0 ]; then
> + echo "xfs_repair returns $res; replay log?" >>$tmp.repair
> + _test_mount
> + res=$?
> + if [ $res -gt 0 ]; then
> + echo "mount returns $res; zap log?" >>$tmp.repair
> + _xfs_repair_test_fs -L >>$tmp.repair 2>&1
> + echo "log zap returns $?" >> $tmp.repair
> + else
> + umount "$TEST_DEV"
> + fi
> + _xfs_repair_test_fs "$@" >>$tmp.repair 2>&1
> + res=$?
> + fi
> + ;;
> + *)
> + # Let's hope fsck -y suffices...
> + fsck -t $FSTYP -fy $TEST_DEV >$tmp.repair 2>&1
> + res=$?
> + if test "$res" -lt 4 ; then
> + res=0
> + fi
> + ;;
> + esac
> + if [ $res -ne 0 ]; then
> + _log_err "_repair_test_fs: failed, err=$res"
> + echo "*** fsck.$FSTYP output ***" >>$seqres.full
> + cat $tmp.repair >>$seqres.full
> + echo "*** end fsck.$FSTYP output" >>$seqres.full
> +
> + fi
> + rm -f $tmp.repair
> + return $res
> +}
> +
> _get_pids_by_name()
> {
> if [ $# -ne 1 ]
> diff --git a/common/xfs b/common/xfs
> index e8e4832c..4a130493 100644
> --- a/common/xfs
> +++ b/common/xfs
> @@ -988,6 +988,18 @@ _check_xfs_test_fs()
> return $?
> }
>
> +# modeled after _scratch_xfs_repair
> +_repair_xfs_test_fs()
Dumb bikeshed: Can this be named _test_xfs_repair? :D
With that changed,
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
--D
> +{
> + TEST_OPTIONS=""
> + [ "$USE_EXTERNAL" = yes -a ! -z "$TEST_LOGDEV" ] && \
> + TEST_OPTIONS="-l$TEST_LOGDEV"
> + [ "$USE_EXTERNAL" = yes -a ! -z "$TEST_RTDEV" ] && \
> + TEST_OPTIONS=$TEST_OPTIONS" -r$TEST_RTDEV"
> + [ "$LARGE_TEST_DEV" = yes ] && TEST_OPTIONS=$TEST_OPTIONS" -t"
> + $XFS_REPAIR_PROG $TEST_OPTIONS $* $TEST_DEV
> +}
> +
> _require_xfs_test_rmapbt()
> {
> _require_test
> --
> 2.40.0.634.g4ca3ef3211-goog
>
prev parent reply other threads:[~2023-04-15 0:35 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-14 22:11 [PATCH 1/2] check: try to fix the test device if it gets corrupted Leah Rumancik
2023-04-14 22:11 ` [PATCH 2/2] check: _check_filesystems for errors even if test failed Leah Rumancik
2023-04-15 0:41 ` Darrick J. Wong
2023-04-17 17:19 ` Leah Rumancik
2023-04-17 20:08 ` Leah Rumancik
2023-04-18 4:49 ` Darrick J. Wong
2023-04-15 0:35 ` Darrick J. Wong [this message]
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=20230415003541.GB360885@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=fstests@vger.kernel.org \
--cc=leah.rumancik@gmail.com \
--cc=tytso@mit.edu \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox