diff mbox series

check: disable HAVE_PRIVATENS by default

Message ID 20250303205046.667838-1-zlang@kernel.org (mailing list archive)
State New
Headers show
Series check: disable HAVE_PRIVATENS by default | expand

Commit Message

Zorro Lang March 3, 2025, 8:50 p.m. UTC
Currently we have 3 ways to run a test case in _run_seq():

  if [ -n "${HAVE_PRIVATENS}" ]; then
      ./tools/run_privatens "./$seq"
      ...
  elif [ -n "${HAVE_SYSTEMD_SCOPES}" ]; then
      systemd-run --quiet --unit "${unit}" --scope \
             ./tools/run_setsid "./$seq" &
      ...
  else
      ./tools/run_setsid "./$seq" &
      ...
  fi

The "privatens" way brings in some regressions. We need more time
to develop and test this way, it's not time let it to be the
first default choice, so isolate the HAVE_PRIVATENS initialization
by a TRY_PRIVATENS parameter, and disable it by default.

Set TRY_PRIVATENS=yes to give "privatens" a try, otherwise run in
old ways. This patch can be removed after "privatens" way is stable.

Signed-off-by: Zorro Lang <zlang@kernel.org>
---

Hi,

This patch aims to be talked. Refer to above commit log. This patch
is a workaround for 2 targets:
1) Avoid the regressions of lastest xfstests release.
2) Give us more time to improve the "privatens" method.

And compare with revert that commit directly, this patch trys to
give "privatens" method a chance to be enabled and tested (by
export TRY_PRIVATENS=yes).

Thanks,
Zorro

 check | 22 +++++++---------------
 1 file changed, 7 insertions(+), 15 deletions(-)

Comments

Darrick J. Wong March 4, 2025, 8:04 p.m. UTC | #1
On Tue, Mar 04, 2025 at 04:50:46AM +0800, Zorro Lang wrote:
> Currently we have 3 ways to run a test case in _run_seq():
> 
>   if [ -n "${HAVE_PRIVATENS}" ]; then
>       ./tools/run_privatens "./$seq"
>       ...
>   elif [ -n "${HAVE_SYSTEMD_SCOPES}" ]; then
>       systemd-run --quiet --unit "${unit}" --scope \
>              ./tools/run_setsid "./$seq" &
>       ...
>   else
>       ./tools/run_setsid "./$seq" &
>       ...
>   fi
> 
> The "privatens" way brings in some regressions. We need more time
> to develop and test this way, it's not time let it to be the
> first default choice, so isolate the HAVE_PRIVATENS initialization
> by a TRY_PRIVATENS parameter, and disable it by default.
> 
> Set TRY_PRIVATENS=yes to give "privatens" a try, otherwise run in
> old ways. This patch can be removed after "privatens" way is stable.

I think it's ok to turn off privatens for now, seeing as it's clearly
caused some regressions that I don't know how to fix.  The ones I know
about are:

1. The btrfs/14[01] use of BASHPID (not fixed)
2. The weird flock thing in generic/504 (fixed)

But then there's a bunch more complaints about "everything" being
broken.  If things are still broken for you, please send detailed dumps
and let Zorro and I figure that out.

Note that run_privatens is a lot cleaner than run_setsid -- as I've
stated elsewhere, using a new unix process session id to run a test is
very messy -- there's no longer a controlling tty, so SIGSTOP doesn't
work and SIGINT is masked by default.

As I suggested elsewhere today, maybe the solution is to have the tests
that *require* the global pid namespace (anything calling the
btrfs*read*mirror* helpers) turn themselves off with a
"_require_non_privatens"; and then ./check can select setsid for any
test containing that phrase.

Thoughts on this part?

--

I'm ok with taking the quickest route to something that makes everyone
happy so that we can push to master again, and merge other peoples'
changes because I bet those have been backing up for a while.

It's clearly time to talk about reorganizing who's responsible for
reviews and for pushing git tree changes, and to take pressure off
Zorro.  Anand has been signalling interest in taking on some of the
btrfs workload, and I think that should happen in some form because
Zorro and I are clearly outmatched.

> Signed-off-by: Zorro Lang <zlang@kernel.org>
> ---
> 
> Hi,
> 
> This patch aims to be talked. Refer to above commit log. This patch
> is a workaround for 2 targets:
> 1) Avoid the regressions of lastest xfstests release.
> 2) Give us more time to improve the "privatens" method.
> 
> And compare with revert that commit directly, this patch trys to
> give "privatens" method a chance to be enabled and tested (by
> export TRY_PRIVATENS=yes).

Everyone else: do things work better if you manually patch out the
run_privatens selection code so that run_setsid is always used?  The
setsid code itself is also new; before that fstests just used killall.

> Thanks,
> Zorro
> 
>  check | 22 +++++++---------------
>  1 file changed, 7 insertions(+), 15 deletions(-)
> 
> diff --git a/check b/check
> index ea92b0d62..33eb3e085 100755
> --- a/check
> +++ b/check
> @@ -674,10 +674,13 @@ _stash_test_status() {
>  	esac
>  }
>  
> -# Can we run in a private pid/mount namespace?
> -HAVE_PRIVATENS=
> -./tools/run_privatens bash -c "exit 77"
> -test $? -eq 77 && HAVE_PRIVATENS=yes
> +# 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=
> @@ -692,15 +695,6 @@ function _adjust_oom_score() {
>  }
>  _adjust_oom_score -500
>  
> -warn_deprecated_sessionid()
> -{
> -	if [ -z "$WARNED_DEPRECATED_SESSIONID" ]; then
> -		echo "WARNING: Running fstests without private pid/mount namespace"
> -		echo "support is deprecated and will be removed in February 2026."
> -		WARNED_DEPRECATED_SESSIONID=1
> -	fi
> -}
> -
>  # ...and make the tests themselves somewhat more attractive to it, so that if
>  # 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
> @@ -900,8 +894,6 @@ function run_section()
>  	seqres="$check"
>  	_check_test_fs
>  
> -	test -n "$HAVE_PRIVATENS" || warn_deprecated_sessionid
> -

Removal of the deprecation should be a separate patch, for which I will
pre-offer a
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>

--D

>  	loop_status=()	# track rerun-on-failure state
>  	local tc_status ix
>  	local -a _list=( $list )
> -- 
> 2.47.1
>
Zorro Lang March 4, 2025, 8:43 p.m. UTC | #2
On Tue, Mar 04, 2025 at 12:04:58PM -0800, Darrick J. Wong wrote:
> On Tue, Mar 04, 2025 at 04:50:46AM +0800, Zorro Lang wrote:
> > Currently we have 3 ways to run a test case in _run_seq():
> > 
> >   if [ -n "${HAVE_PRIVATENS}" ]; then
> >       ./tools/run_privatens "./$seq"
> >       ...
> >   elif [ -n "${HAVE_SYSTEMD_SCOPES}" ]; then
> >       systemd-run --quiet --unit "${unit}" --scope \
> >              ./tools/run_setsid "./$seq" &
> >       ...
> >   else
> >       ./tools/run_setsid "./$seq" &
> >       ...
> >   fi
> > 
> > The "privatens" way brings in some regressions. We need more time
> > to develop and test this way, it's not time let it to be the
> > first default choice, so isolate the HAVE_PRIVATENS initialization
> > by a TRY_PRIVATENS parameter, and disable it by default.
> > 
> > Set TRY_PRIVATENS=yes to give "privatens" a try, otherwise run in
> > old ways. This patch can be removed after "privatens" way is stable.
> 
> I think it's ok to turn off privatens for now, seeing as it's clearly
> caused some regressions that I don't know how to fix.  The ones I know
> about are:
> 
> 1. The btrfs/14[01] use of BASHPID (not fixed)
> 2. The weird flock thing in generic/504 (fixed)

And a bug report when /tmp isn't a mount point.

> 
> But then there's a bunch more complaints about "everything" being
> broken.  If things are still broken for you, please send detailed dumps
> and let Zorro and I figure that out.
> 
> Note that run_privatens is a lot cleaner than run_setsid -- as I've
> stated elsewhere, using a new unix process session id to run a test is
> very messy -- there's no longer a controlling tty, so SIGSTOP doesn't
> work and SIGINT is masked by default.
> 
> As I suggested elsewhere today, maybe the solution is to have the tests
> that *require* the global pid namespace (anything calling the
> btrfs*read*mirror* helpers) turn themselves off with a
> "_require_non_privatens"; and then ./check can select setsid for any
> test containing that phrase.
> 
> Thoughts on this part?

More likes a trick, anyway I think we can talk about the way to fix btrfs
BASHPID related problems later. And I still don't know if it's the same
root cause with Dave Sterba hit.

> 
> --
> 
> I'm ok with taking the quickest route to something that makes everyone
> happy so that we can push to master again, and merge other peoples'
> changes because I bet those have been backing up for a while.
> 
> It's clearly time to talk about reorganizing who's responsible for
> reviews and for pushing git tree changes, and to take pressure off
> Zorro.  Anand has been signalling interest in taking on some of the
> btrfs workload, and I think that should happen in some form because
> Zorro and I are clearly outmatched.

Acutally I've tried to test most of major fs which fstests supports,
before a release. Btrfs testing is supported by my test scripts now.
Currently only default btrfs be tested. If Anand would like to test
more for btrfs before each release, I think that helps btrfs more.

> 
> > Signed-off-by: Zorro Lang <zlang@kernel.org>
> > ---
> > 
> > Hi,
> > 
> > This patch aims to be talked. Refer to above commit log. This patch
> > is a workaround for 2 targets:
> > 1) Avoid the regressions of lastest xfstests release.
> > 2) Give us more time to improve the "privatens" method.
> > 
> > And compare with revert that commit directly, this patch trys to
> > give "privatens" method a chance to be enabled and tested (by
> > export TRY_PRIVATENS=yes).
> 
> Everyone else: do things work better if you manually patch out the
> run_privatens selection code so that run_setsid is always used?  The
> setsid code itself is also new; before that fstests just used killall.

If no one reports bugs to run_setsid, I'll think it's stable (temporarily),
then we'll pay more attention to "privatens".

> 
> > Thanks,
> > Zorro
> > 
> >  check | 22 +++++++---------------
> >  1 file changed, 7 insertions(+), 15 deletions(-)
> > 
> > diff --git a/check b/check
> > index ea92b0d62..33eb3e085 100755
> > --- a/check
> > +++ b/check
> > @@ -674,10 +674,13 @@ _stash_test_status() {
> >  	esac
> >  }
> >  
> > -# Can we run in a private pid/mount namespace?
> > -HAVE_PRIVATENS=
> > -./tools/run_privatens bash -c "exit 77"
> > -test $? -eq 77 && HAVE_PRIVATENS=yes
> > +# 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=
> > @@ -692,15 +695,6 @@ function _adjust_oom_score() {
> >  }
> >  _adjust_oom_score -500
> >  
> > -warn_deprecated_sessionid()
> > -{
> > -	if [ -z "$WARNED_DEPRECATED_SESSIONID" ]; then
> > -		echo "WARNING: Running fstests without private pid/mount namespace"
> > -		echo "support is deprecated and will be removed in February 2026."
> > -		WARNED_DEPRECATED_SESSIONID=1
> > -	fi
> > -}
> > -
> >  # ...and make the tests themselves somewhat more attractive to it, so that if
> >  # 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
> > @@ -900,8 +894,6 @@ function run_section()
> >  	seqres="$check"
> >  	_check_test_fs
> >  
> > -	test -n "$HAVE_PRIVATENS" || warn_deprecated_sessionid
> > -
> 
> Removal of the deprecation should be a separate patch, for which I will
> pre-offer a
> Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>

Ok, I'll splite this patch and send a v2. Thanks your reviewing!

Thanks,
Zorro

> 
> --D
> 
> >  	loop_status=()	# track rerun-on-failure state
> >  	local tc_status ix
> >  	local -a _list=( $list )
> > -- 
> > 2.47.1
> > 
>
Darrick J. Wong March 4, 2025, 8:59 p.m. UTC | #3
On Wed, Mar 05, 2025 at 04:43:01AM +0800, Zorro Lang wrote:
> On Tue, Mar 04, 2025 at 12:04:58PM -0800, Darrick J. Wong wrote:
> > On Tue, Mar 04, 2025 at 04:50:46AM +0800, Zorro Lang wrote:
> > > Currently we have 3 ways to run a test case in _run_seq():
> > > 
> > >   if [ -n "${HAVE_PRIVATENS}" ]; then
> > >       ./tools/run_privatens "./$seq"
> > >       ...
> > >   elif [ -n "${HAVE_SYSTEMD_SCOPES}" ]; then
> > >       systemd-run --quiet --unit "${unit}" --scope \
> > >              ./tools/run_setsid "./$seq" &
> > >       ...
> > >   else
> > >       ./tools/run_setsid "./$seq" &
> > >       ...
> > >   fi
> > > 
> > > The "privatens" way brings in some regressions. We need more time
> > > to develop and test this way, it's not time let it to be the
> > > first default choice, so isolate the HAVE_PRIVATENS initialization
> > > by a TRY_PRIVATENS parameter, and disable it by default.
> > > 
> > > Set TRY_PRIVATENS=yes to give "privatens" a try, otherwise run in
> > > old ways. This patch can be removed after "privatens" way is stable.
> > 
> > I think it's ok to turn off privatens for now, seeing as it's clearly
> > caused some regressions that I don't know how to fix.  The ones I know
> > about are:
> > 
> > 1. The btrfs/14[01] use of BASHPID (not fixed)
> > 2. The weird flock thing in generic/504 (fixed)
> 
> And a bug report when /tmp isn't a mount point.

Oh yeah.  Forgot that one.  We could fix it this way:

diff --git a/check b/check
index ea92b0d62a..7196cfbfea 100755
--- a/check
+++ b/check
@@ -821,6 +821,20 @@ function run_section()
 		echo "SECTION       -- $section"
 	fi
 
+	# If we're running in a private mount namespace, /tmp is a private
+	# directory.  We /could/ just mkdir it, but we'd rather have people
+	# set those paths elsewhere.
+	if [ "$HAVE_PRIVATENS" = yes ] && [[ $TEST_DIR =~ ^\/tmp ]]; then
+		echo "$TEST_DIR: TEST_DIR must not be in /tmp"
+		status=1
+		exit
+	fi
+	if [ "$HAVE_PRIVATENS" = yes ] && [[ $SCRATCH_MNT =~ ^\/tmp ]]; then
+		echo "$SCRATCH_MNT: SCRATCH_MNT must not be in /tmp"
+		status=1
+		exit
+	fi
+
 	sect_start=`_wallclock`
 	if $RECREATE_TEST_DEV || [ "$OLD_FSTYP" != "$FSTYP" ]; then
 		echo "RECREATING    -- $FSTYP on $TEST_DEV"

Or we could just have _begin_fstest mkdir them if they don't exist.

Unless it'd make more sense to have ./check define TEST_DIR and
SCRATCH_MNT itself?  Imagine if it instead did this:

	FSTESTS_RUN_DIR=/run/fstests-$$
	mkdir -p $FSTESTS_RUN_DIR
	mount -t tmpfs none $FSTESTS_RUN_DIR
	test -n "$TEST_DEV" && mkdir -p $FSTESTS_RUN_DIR/test
	test -n "$SCRATCH_MNT" && $FSTESTS_RUN_DIR/scratch
	mount -o remount,ro $FSTESTS_RUN_DIR
	test -n "$TEST_DEV" && TEST_DIR=$FSTESTS_RUN_DIR/test
	test -n "$SCRATCH_MNT" && SCRATCH_MNT=$FSTESTS_RUN_DIR/scratch

Now the user doesn't have to create the directories themselves, and
since the underlying $FSTESTS_RUN_DIR is read only, mount failures will
show up immediately as write failures instead of filling up the wrong
filesystem.

--D

> > But then there's a bunch more complaints about "everything" being
> > broken.  If things are still broken for you, please send detailed dumps
> > and let Zorro and I figure that out.
> > 
> > Note that run_privatens is a lot cleaner than run_setsid -- as I've
> > stated elsewhere, using a new unix process session id to run a test is
> > very messy -- there's no longer a controlling tty, so SIGSTOP doesn't
> > work and SIGINT is masked by default.
> > 
> > As I suggested elsewhere today, maybe the solution is to have the tests
> > that *require* the global pid namespace (anything calling the
> > btrfs*read*mirror* helpers) turn themselves off with a
> > "_require_non_privatens"; and then ./check can select setsid for any
> > test containing that phrase.
> > 
> > Thoughts on this part?
> 
> More likes a trick, anyway I think we can talk about the way to fix btrfs
> BASHPID related problems later. And I still don't know if it's the same
> root cause with Dave Sterba hit.
> 
> > 
> > --
> > 
> > I'm ok with taking the quickest route to something that makes everyone
> > happy so that we can push to master again, and merge other peoples'
> > changes because I bet those have been backing up for a while.
> > 
> > It's clearly time to talk about reorganizing who's responsible for
> > reviews and for pushing git tree changes, and to take pressure off
> > Zorro.  Anand has been signalling interest in taking on some of the
> > btrfs workload, and I think that should happen in some form because
> > Zorro and I are clearly outmatched.
> 
> Acutally I've tried to test most of major fs which fstests supports,
> before a release. Btrfs testing is supported by my test scripts now.
> Currently only default btrfs be tested. If Anand would like to test
> more for btrfs before each release, I think that helps btrfs more.
> 
> > 
> > > Signed-off-by: Zorro Lang <zlang@kernel.org>
> > > ---
> > > 
> > > Hi,
> > > 
> > > This patch aims to be talked. Refer to above commit log. This patch
> > > is a workaround for 2 targets:
> > > 1) Avoid the regressions of lastest xfstests release.
> > > 2) Give us more time to improve the "privatens" method.
> > > 
> > > And compare with revert that commit directly, this patch trys to
> > > give "privatens" method a chance to be enabled and tested (by
> > > export TRY_PRIVATENS=yes).
> > 
> > Everyone else: do things work better if you manually patch out the
> > run_privatens selection code so that run_setsid is always used?  The
> > setsid code itself is also new; before that fstests just used killall.
> 
> If no one reports bugs to run_setsid, I'll think it's stable (temporarily),
> then we'll pay more attention to "privatens".
> 
> > 
> > > Thanks,
> > > Zorro
> > > 
> > >  check | 22 +++++++---------------
> > >  1 file changed, 7 insertions(+), 15 deletions(-)
> > > 
> > > diff --git a/check b/check
> > > index ea92b0d62..33eb3e085 100755
> > > --- a/check
> > > +++ b/check
> > > @@ -674,10 +674,13 @@ _stash_test_status() {
> > >  	esac
> > >  }
> > >  
> > > -# Can we run in a private pid/mount namespace?
> > > -HAVE_PRIVATENS=
> > > -./tools/run_privatens bash -c "exit 77"
> > > -test $? -eq 77 && HAVE_PRIVATENS=yes
> > > +# 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=
> > > @@ -692,15 +695,6 @@ function _adjust_oom_score() {
> > >  }
> > >  _adjust_oom_score -500
> > >  
> > > -warn_deprecated_sessionid()
> > > -{
> > > -	if [ -z "$WARNED_DEPRECATED_SESSIONID" ]; then
> > > -		echo "WARNING: Running fstests without private pid/mount namespace"
> > > -		echo "support is deprecated and will be removed in February 2026."
> > > -		WARNED_DEPRECATED_SESSIONID=1
> > > -	fi
> > > -}
> > > -
> > >  # ...and make the tests themselves somewhat more attractive to it, so that if
> > >  # 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
> > > @@ -900,8 +894,6 @@ function run_section()
> > >  	seqres="$check"
> > >  	_check_test_fs
> > >  
> > > -	test -n "$HAVE_PRIVATENS" || warn_deprecated_sessionid
> > > -
> > 
> > Removal of the deprecation should be a separate patch, for which I will
> > pre-offer a
> > Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
> 
> Ok, I'll splite this patch and send a v2. Thanks your reviewing!
> 
> Thanks,
> Zorro
> 
> > 
> > --D
> > 
> > >  	loop_status=()	# track rerun-on-failure state
> > >  	local tc_status ix
> > >  	local -a _list=( $list )
> > > -- 
> > > 2.47.1
> > > 
> > 
>
Zorro Lang March 6, 2025, 8:05 a.m. UTC | #4
On Tue, Mar 04, 2025 at 12:59:42PM -0800, Darrick J. Wong wrote:
> On Wed, Mar 05, 2025 at 04:43:01AM +0800, Zorro Lang wrote:
> > On Tue, Mar 04, 2025 at 12:04:58PM -0800, Darrick J. Wong wrote:
> > > On Tue, Mar 04, 2025 at 04:50:46AM +0800, Zorro Lang wrote:
> > > > Currently we have 3 ways to run a test case in _run_seq():
> > > > 
> > > >   if [ -n "${HAVE_PRIVATENS}" ]; then
> > > >       ./tools/run_privatens "./$seq"
> > > >       ...
> > > >   elif [ -n "${HAVE_SYSTEMD_SCOPES}" ]; then
> > > >       systemd-run --quiet --unit "${unit}" --scope \
> > > >              ./tools/run_setsid "./$seq" &
> > > >       ...
> > > >   else
> > > >       ./tools/run_setsid "./$seq" &
> > > >       ...
> > > >   fi
> > > > 
> > > > The "privatens" way brings in some regressions. We need more time
> > > > to develop and test this way, it's not time let it to be the
> > > > first default choice, so isolate the HAVE_PRIVATENS initialization
> > > > by a TRY_PRIVATENS parameter, and disable it by default.
> > > > 
> > > > Set TRY_PRIVATENS=yes to give "privatens" a try, otherwise run in
> > > > old ways. This patch can be removed after "privatens" way is stable.
> > > 
> > > I think it's ok to turn off privatens for now, seeing as it's clearly
> > > caused some regressions that I don't know how to fix.  The ones I know
> > > about are:
> > > 
> > > 1. The btrfs/14[01] use of BASHPID (not fixed)
> > > 2. The weird flock thing in generic/504 (fixed)
> > 
> > And a bug report when /tmp isn't a mount point.
> 
> Oh yeah.  Forgot that one.  We could fix it this way:
> 
> diff --git a/check b/check
> index ea92b0d62a..7196cfbfea 100755
> --- a/check
> +++ b/check
> @@ -821,6 +821,20 @@ function run_section()
>  		echo "SECTION       -- $section"
>  	fi
>  
> +	# If we're running in a private mount namespace, /tmp is a private
> +	# directory.  We /could/ just mkdir it, but we'd rather have people
> +	# set those paths elsewhere.
> +	if [ "$HAVE_PRIVATENS" = yes ] && [[ $TEST_DIR =~ ^\/tmp ]]; then
> +		echo "$TEST_DIR: TEST_DIR must not be in /tmp"
> +		status=1
> +		exit
> +	fi
> +	if [ "$HAVE_PRIVATENS" = yes ] && [[ $SCRATCH_MNT =~ ^\/tmp ]]; then
> +		echo "$SCRATCH_MNT: SCRATCH_MNT must not be in /tmp"
> +		status=1
> +		exit
> +	fi
> +
>  	sect_start=`_wallclock`
>  	if $RECREATE_TEST_DEV || [ "$OLD_FSTYP" != "$FSTYP" ]; then
>  		echo "RECREATING    -- $FSTYP on $TEST_DEV"

Oh, I didn't describe clearly, I mean this one bug:
https://lore.kernel.org/fstests/20250303064209.602577-1-naohiro.aota@wdc.com/

some systems might not have a tmpfs on /tmp ^^ I'll leave more review points
under that thread.

> 
> Or we could just have _begin_fstest mkdir them if they don't exist.
> 
> Unless it'd make more sense to have ./check define TEST_DIR and
> SCRATCH_MNT itself?  Imagine if it instead did this:
> 
> 	FSTESTS_RUN_DIR=/run/fstests-$$
> 	mkdir -p $FSTESTS_RUN_DIR
> 	mount -t tmpfs none $FSTESTS_RUN_DIR

Do you hope to have TEST_DIR and SCRATCH_MNT under a tmpfs?

> 	test -n "$TEST_DEV" && mkdir -p $FSTESTS_RUN_DIR/test
> 	test -n "$SCRATCH_MNT" && $FSTESTS_RUN_DIR/scratch
> 	mount -o remount,ro $FSTESTS_RUN_DIR
> 	test -n "$TEST_DEV" && TEST_DIR=$FSTESTS_RUN_DIR/test
> 	test -n "$SCRATCH_MNT" && SCRATCH_MNT=$FSTESTS_RUN_DIR/scratch
> 
> Now the user doesn't have to create the directories themselves, and
> since the underlying $FSTESTS_RUN_DIR is read only, mount failures will
> show up immediately as write failures instead of filling up the wrong
> filesystem.

I think we can talk about more details in another thread.

Thanks,
Zorro

> 
> --D
> 
> > > But then there's a bunch more complaints about "everything" being
> > > broken.  If things are still broken for you, please send detailed dumps
> > > and let Zorro and I figure that out.
> > > 
> > > Note that run_privatens is a lot cleaner than run_setsid -- as I've
> > > stated elsewhere, using a new unix process session id to run a test is
> > > very messy -- there's no longer a controlling tty, so SIGSTOP doesn't
> > > work and SIGINT is masked by default.
> > > 
> > > As I suggested elsewhere today, maybe the solution is to have the tests
> > > that *require* the global pid namespace (anything calling the
> > > btrfs*read*mirror* helpers) turn themselves off with a
> > > "_require_non_privatens"; and then ./check can select setsid for any
> > > test containing that phrase.
> > > 
> > > Thoughts on this part?
> > 
> > More likes a trick, anyway I think we can talk about the way to fix btrfs
> > BASHPID related problems later. And I still don't know if it's the same
> > root cause with Dave Sterba hit.
> > 
> > > 
> > > --
> > > 
> > > I'm ok with taking the quickest route to something that makes everyone
> > > happy so that we can push to master again, and merge other peoples'
> > > changes because I bet those have been backing up for a while.
> > > 
> > > It's clearly time to talk about reorganizing who's responsible for
> > > reviews and for pushing git tree changes, and to take pressure off
> > > Zorro.  Anand has been signalling interest in taking on some of the
> > > btrfs workload, and I think that should happen in some form because
> > > Zorro and I are clearly outmatched.
> > 
> > Acutally I've tried to test most of major fs which fstests supports,
> > before a release. Btrfs testing is supported by my test scripts now.
> > Currently only default btrfs be tested. If Anand would like to test
> > more for btrfs before each release, I think that helps btrfs more.
> > 
> > > 
> > > > Signed-off-by: Zorro Lang <zlang@kernel.org>
> > > > ---
> > > > 
> > > > Hi,
> > > > 
> > > > This patch aims to be talked. Refer to above commit log. This patch
> > > > is a workaround for 2 targets:
> > > > 1) Avoid the regressions of lastest xfstests release.
> > > > 2) Give us more time to improve the "privatens" method.
> > > > 
> > > > And compare with revert that commit directly, this patch trys to
> > > > give "privatens" method a chance to be enabled and tested (by
> > > > export TRY_PRIVATENS=yes).
> > > 
> > > Everyone else: do things work better if you manually patch out the
> > > run_privatens selection code so that run_setsid is always used?  The
> > > setsid code itself is also new; before that fstests just used killall.
> > 
> > If no one reports bugs to run_setsid, I'll think it's stable (temporarily),
> > then we'll pay more attention to "privatens".
> > 
> > > 
> > > > Thanks,
> > > > Zorro
> > > > 
> > > >  check | 22 +++++++---------------
> > > >  1 file changed, 7 insertions(+), 15 deletions(-)
> > > > 
> > > > diff --git a/check b/check
> > > > index ea92b0d62..33eb3e085 100755
> > > > --- a/check
> > > > +++ b/check
> > > > @@ -674,10 +674,13 @@ _stash_test_status() {
> > > >  	esac
> > > >  }
> > > >  
> > > > -# Can we run in a private pid/mount namespace?
> > > > -HAVE_PRIVATENS=
> > > > -./tools/run_privatens bash -c "exit 77"
> > > > -test $? -eq 77 && HAVE_PRIVATENS=yes
> > > > +# 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=
> > > > @@ -692,15 +695,6 @@ function _adjust_oom_score() {
> > > >  }
> > > >  _adjust_oom_score -500
> > > >  
> > > > -warn_deprecated_sessionid()
> > > > -{
> > > > -	if [ -z "$WARNED_DEPRECATED_SESSIONID" ]; then
> > > > -		echo "WARNING: Running fstests without private pid/mount namespace"
> > > > -		echo "support is deprecated and will be removed in February 2026."
> > > > -		WARNED_DEPRECATED_SESSIONID=1
> > > > -	fi
> > > > -}
> > > > -
> > > >  # ...and make the tests themselves somewhat more attractive to it, so that if
> > > >  # 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
> > > > @@ -900,8 +894,6 @@ function run_section()
> > > >  	seqres="$check"
> > > >  	_check_test_fs
> > > >  
> > > > -	test -n "$HAVE_PRIVATENS" || warn_deprecated_sessionid
> > > > -
> > > 
> > > Removal of the deprecation should be a separate patch, for which I will
> > > pre-offer a
> > > Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
> > 
> > Ok, I'll splite this patch and send a v2. Thanks your reviewing!
> > 
> > Thanks,
> > Zorro
> > 
> > > 
> > > --D
> > > 
> > > >  	loop_status=()	# track rerun-on-failure state
> > > >  	local tc_status ix
> > > >  	local -a _list=( $list )
> > > > -- 
> > > > 2.47.1
> > > > 
> > > 
> > 
>
diff mbox series

Patch

diff --git a/check b/check
index ea92b0d62..33eb3e085 100755
--- a/check
+++ b/check
@@ -674,10 +674,13 @@  _stash_test_status() {
 	esac
 }
 
-# Can we run in a private pid/mount namespace?
-HAVE_PRIVATENS=
-./tools/run_privatens bash -c "exit 77"
-test $? -eq 77 && HAVE_PRIVATENS=yes
+# 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=
@@ -692,15 +695,6 @@  function _adjust_oom_score() {
 }
 _adjust_oom_score -500
 
-warn_deprecated_sessionid()
-{
-	if [ -z "$WARNED_DEPRECATED_SESSIONID" ]; then
-		echo "WARNING: Running fstests without private pid/mount namespace"
-		echo "support is deprecated and will be removed in February 2026."
-		WARNED_DEPRECATED_SESSIONID=1
-	fi
-}
-
 # ...and make the tests themselves somewhat more attractive to it, so that if
 # 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
@@ -900,8 +894,6 @@  function run_section()
 	seqres="$check"
 	_check_test_fs
 
-	test -n "$HAVE_PRIVATENS" || warn_deprecated_sessionid
-
 	loop_status=()	# track rerun-on-failure state
 	local tc_status ix
 	local -a _list=( $list )