From: "Darrick J. Wong" <djwong@kernel.org>
To: Zorro Lang <zlang@kernel.org>
Cc: fstests@vger.kernel.org, Dave Chinner <david@fromorbit.com>
Subject: Re: [PATCH 1/2] fstests: remove privatens test way from check
Date: Fri, 21 Mar 2025 08:35:53 -0700 [thread overview]
Message-ID: <20250321153553.GC4001511@frogsfrogsfrogs> (raw)
In-Reply-To: <20250320192812.782380-2-zlang@kernel.org>
On Fri, Mar 21, 2025 at 03:28:11AM +0800, Zorro Lang wrote:
> This patch totally revert:
> ce7f796ad check: remove the deprecation of sessionid
> 336784e3d check: disable HAVE_PRIVATENS by default
> 949bdf8ea check: deprecate using process sessions to isolate test instances
> and partially revert:
> 247ab01fa check: run tests in a private pid/mount namespace
>
> So it does:
> 1. Remove "run_privatens" related things from xfstests/check, due to
> check doesn't need that test way.
> 2. Keep run_privatens script and related changes for check-parallel.
>
> Signed-off-by: Zorro Lang <zlang@kernel.org>
Seems to run fine here, so
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
--D
> ---
> check | 37 +++++++++++--------------------------
> common/rc | 12 ++----------
> 2 files changed, 13 insertions(+), 36 deletions(-)
>
> diff --git a/check b/check
> index 33eb3e085..ba853ae85 100755
> --- a/check
> +++ b/check
> @@ -674,14 +674,6 @@ _stash_test_status() {
> esac
> }
>
> -# Don't try "privatens" by default, it's experimental for now.
> -if [ "$TRY_PRIVATENS" = "yes" ];then
> - # Can we run in a private pid/mount namespace?
> - HAVE_PRIVATENS=
> - ./tools/run_privatens bash -c "exit 77"
> - test $? -eq 77 && HAVE_PRIVATENS=yes
> -fi
> -
> # Can we run systemd scopes?
> HAVE_SYSTEMD_SCOPES=
> systemctl reset-failed "fstests-check" &>/dev/null
> @@ -699,29 +691,22 @@ _adjust_oom_score -500
> # the system runs out of memory it'll be the test that gets killed and not the
> # test framework. The test is run in a separate process without any of our
> # functions, so we open-code adjusting the OOM score.
> +#
> +# If systemd is available, run the entire test script in a scope so that we can
> +# kill all subprocesses of the test if it fails to clean up after itself. This
> +# is essential for ensuring that the post-test unmount succeeds. Note that
> +# systemd doesn't automatically remove transient scopes that fail to terminate
> +# when systemd tells them to terminate (e.g. programs stuck in D state when
> +# systemd sends SIGKILL), so we use reset-failed to tear down the scope.
> +#
> +# Use setsid to run the test program with a separate session id so that we
> +# can pkill only the processes started by this test.
> _run_seq() {
> local res
> unset CHILDPID
> unset FSTESTS_ISOL # set by tools/run_seq_*
>
> - if [ -n "${HAVE_PRIVATENS}" ]; then
> - # If pid and mount namespaces are available, run the whole test
> - # inside them so that the test cannot access any process or
> - # /tmp contents that it does not itself create. The ./$seq
> - # process is considered the "init" process of the pid
> - # namespace, so all subprocesses will be sent SIGKILL when it
> - # terminates.
> - ./tools/run_privatens "./$seq"
> - res=$?
> - elif [ -n "${HAVE_SYSTEMD_SCOPES}" ]; then
> - # If systemd is available, run the entire test script in a
> - # scope so that we can kill all subprocesses of the test if it
> - # fails to clean up after itself. This is essential for
> - # ensuring that the post-test unmount succeeds. Note that
> - # systemd doesn't automatically remove transient scopes that
> - # fail to terminate when systemd tells them to terminate (e.g.
> - # programs stuck in D state when systemd sends SIGKILL), so we
> - # use reset-failed to tear down the scope.
> + if [ -n "${HAVE_SYSTEMD_SCOPES}" ]; then
> local unit="$(systemd-escape "fs$seq").scope"
> systemctl reset-failed "${unit}" &> /dev/null
> systemd-run --quiet --unit "${unit}" --scope \
> diff --git a/common/rc b/common/rc
> index e51686389..55c384a63 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -33,11 +33,7 @@ _test_sync()
> # Kill only the processes started by this test.
> _pkill()
> {
> - if [ "$FSTESTS_ISOL" = "setsid" ]; then
> - pkill --session 0 "$@"
> - else
> - pkill "$@"
> - fi
> + pkill --session 0 "$@"
> }
>
> # Find only the test processes started by this test
> @@ -2796,11 +2792,7 @@ _require_user_exists()
> # not, passing $SHELL in this manner works both for "su" and "su -c cmd".
> _su()
> {
> - if [ "$FSTESTS_ISOL" = "setsid" ]; then
> - su --session-command $SHELL "$@"
> - else
> - su "$@"
> - fi
> + su --session-command $SHELL "$@"
> }
>
> # check if a user exists and is able to execute commands.
> --
> 2.47.1
>
>
next prev parent reply other threads:[~2025-03-21 15:35 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-20 19:28 [PATCH 0/2] revert "setsid" and "privatens" test ways from check Zorro Lang
2025-03-20 19:28 ` [PATCH 1/2] fstests: remove privatens test way " Zorro Lang
2025-03-21 15:35 ` Darrick J. Wong [this message]
2025-03-20 19:28 ` [PATCH 2/2] fstests: remove run_setsid " Zorro Lang
2025-03-21 15:36 ` Darrick J. Wong
2025-03-21 7:26 ` [PATCH 0/2] revert "setsid" and "privatens" test ways " Christoph Hellwig
2025-03-24 21:44 ` Dave Chinner
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=20250321153553.GC4001511@frogsfrogsfrogs \
--to=djwong@kernel.org \
--cc=david@fromorbit.com \
--cc=fstests@vger.kernel.org \
--cc=zlang@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox