This patch partially revert most of the 88d60f434 ("common: fix pkill by running test program in a separate session"), it does: 1. Remove run_setsid script 2. Remove all run_setsid related things from check 3. Keep the change in _scratch_xfs_stress_scrub_cleanup() which is a bug fix for xfs_scrub test. Signed-off-by: Zorro Lang <zlang@xxxxxxxxxx> --- check | 39 ++++++--------------------------------- common/rc | 4 ++-- tools/Makefile | 1 - tools/run_setsid | 22 ---------------------- 4 files changed, 8 insertions(+), 58 deletions(-) delete mode 100755 tools/run_setsid diff --git a/check b/check index ba853ae85..32890470a 100755 --- a/check +++ b/check @@ -698,46 +698,19 @@ _adjust_oom_score -500 # 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 cmd=(bash -c "test -w ${OOM_SCORE_ADJ} && echo 250 > ${OOM_SCORE_ADJ}; exec ./$seq") local res - unset CHILDPID - unset FSTESTS_ISOL # set by tools/run_seq_* 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 \ - ./tools/run_setsid "./$seq" & - CHILDPID=$! - wait + systemd-run --quiet --unit "${unit}" --scope "${cmd[@]}" res=$? - unset CHILDPID systemctl stop "${unit}" &> /dev/null + return "${res}" else - # bash won't run the SIGINT trap handler while there are - # foreground children in a separate session, so we must run - # the test in the background and wait for it. - ./tools/run_setsid "./$seq" & - CHILDPID=$! - wait - res=$? - unset CHILDPID - fi - - return $res -} - -_kill_seq() { - if [ -n "$CHILDPID" ]; then - # SIGPIPE will kill all the children (including fsstress) - # without bash logging fatal signal termination messages to the - # console - pkill -PIPE --session "$CHILDPID" - wait - unset CHILDPID + "${cmd[@]}" fi } @@ -746,9 +719,9 @@ _prepare_test_list fstests_start_time="$(date +"%F %T")" if $OPTIONS_HAVE_SECTIONS; then - trap "_kill_seq; _summary; exit \$status" 0 1 2 3 15 + trap "_summary; exit \$status" 0 1 2 3 15 else - trap "_kill_seq; _wrapup; exit \$status" 0 1 2 3 15 + trap "_wrapup; exit \$status" 0 1 2 3 15 fi function run_section() diff --git a/common/rc b/common/rc index 55c384a63..fa0f02ac4 100644 --- a/common/rc +++ b/common/rc @@ -33,7 +33,7 @@ _test_sync() # Kill only the processes started by this test. _pkill() { - pkill --session 0 "$@" + pkill "$@" } # Find only the test processes started by this test @@ -2792,7 +2792,7 @@ _require_user_exists() # not, passing $SHELL in this manner works both for "su" and "su -c cmd". _su() { - su --session-command $SHELL "$@" + su "$@" } # check if a user exists and is able to execute commands. diff --git a/tools/Makefile b/tools/Makefile index 2d502884f..af7adc2a6 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -7,7 +7,6 @@ include $(TOPDIR)/include/builddefs TOOLS_DIR = tools helpers=\ - run_setsid \ run_privatens include $(BUILDRULES) diff --git a/tools/run_setsid b/tools/run_setsid deleted file mode 100755 index 5938f80e6..000000000 --- a/tools/run_setsid +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -# SPDX-License-Identifier: GPL-2.0 -# Copyright (c) 2025 Oracle. All Rights Reserved. -# -# Try starting things in a new process session so that test processes have -# something with which to filter only their own subprocesses. - -if [ -n "${FSTESTS_ISOL}" ]; then - # Allow the test to become a target of the oom killer - oom_knob="/proc/self/oom_score_adj" - test -w "${oom_knob}" && echo 250 > "${oom_knob}" - - exec "$@" -fi - -if [ -z "$1" ] || [ "$1" = "--help" ]; then - echo "Usage: $0 command [args...]" - exit 1 -fi - -FSTESTS_ISOL=setsid exec setsid "$0" "$@" -- 2.47.1