* [PATCH v2 0/2] common: Move exit related functions to common/exit
@ 2025-04-29 6:52 Nirjhar Roy (IBM)
2025-04-29 6:52 ` [PATCH v2 1/2] common: Move exit related functions to a common/exit Nirjhar Roy (IBM)
2025-04-29 6:52 ` [PATCH v2 2/2] check: Replace exit with _exit in check Nirjhar Roy (IBM)
0 siblings, 2 replies; 8+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-29 6:52 UTC (permalink / raw)
To: fstests
Cc: linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong, zlang, david,
nirjhar.roy.lists
This patch series moves all the exit related functions to a separate file -
common/exit. This will remove the dependency to source non-related files to use
these exit related functions. Thanks to Dave for suggesting this[1]. The second
patch replaces exit with _exit in check file - I missed replacing them in [2].
[v1] -> v2
- Removed redundant sourcing of common/exit from common/{btrfs,ceph,dump,ext4,populate,punch,rc,repair,xfs}. Thanks to Zorro for pointing this out.
- Moved the sourcing of common/exit in common/preamble from the beginning of the file to inside the function _begin_fstest()
- Moved the sourcing of common/exit in check script from the patch 1 to patch 2 since patch 2 uses _exit().
- Replaced exit() with _exit in the trap handler registration in the check script. Thanks to Zorro for pointing this out.
[v1] https://lore.kernel.org/all/cover.1745390030.git.nirjhar.roy.lists@gmail.com/
[1] https://lore.kernel.org/all/Z_UJ7XcpmtkPRhTr@dread.disaster.area/
[2] https://lore.kernel.org/all/48dacdf636be19ae8bff66cc3852d27e28030613.1744181682.git.nirjhar.roy.lists@gmail.com/
Nirjhar Roy (IBM) (2):
common: Move exit related functions to a common/exit
check: Replace exit with _exit in check
check | 44 ++++++++++++++++++-------------------------
common/config | 17 +----------------
common/exit | 50 +++++++++++++++++++++++++++++++++++++++++++++++++
common/preamble | 1 +
common/punch | 5 -----
common/rc | 28 ---------------------------
6 files changed, 70 insertions(+), 75 deletions(-)
create mode 100644 common/exit
--
2.34.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v2 1/2] common: Move exit related functions to a common/exit
2025-04-29 6:52 [PATCH v2 0/2] common: Move exit related functions to common/exit Nirjhar Roy (IBM)
@ 2025-04-29 6:52 ` Nirjhar Roy (IBM)
2025-04-29 14:07 ` Nirjhar Roy (IBM)
2025-04-29 23:51 ` Dave Chinner
2025-04-29 6:52 ` [PATCH v2 2/2] check: Replace exit with _exit in check Nirjhar Roy (IBM)
1 sibling, 2 replies; 8+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-29 6:52 UTC (permalink / raw)
To: fstests
Cc: linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong, zlang, david,
nirjhar.roy.lists
Introduce a new file common/exit that will contain all the exit
related functions. This will remove the dependencies these functions
have on other non-related helper files and they can be indepedently
sourced. This was suggested by Dave Chinner[1].
[1] https://lore.kernel.org/linux-xfs/Z_UJ7XcpmtkPRhTr@dread.disaster.area/
Suggested-by: Dave Chinner <david@fromorbit.com>
Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
---
common/config | 17 +----------------
common/exit | 50 +++++++++++++++++++++++++++++++++++++++++++++++++
common/preamble | 1 +
common/punch | 5 -----
common/rc | 28 ---------------------------
5 files changed, 52 insertions(+), 49 deletions(-)
create mode 100644 common/exit
diff --git a/common/config b/common/config
index eada3971..6a60d144 100644
--- a/common/config
+++ b/common/config
@@ -38,7 +38,7 @@
# - this script shouldn't make any assertions about filesystem
# validity or mountedness.
#
-
+. common/exit
. common/test_names
# all tests should use a common language setting to prevent golden
@@ -96,15 +96,6 @@ export LOCAL_CONFIGURE_OPTIONS=${LOCAL_CONFIGURE_OPTIONS:=--enable-readline=yes}
export RECREATE_TEST_DEV=${RECREATE_TEST_DEV:=false}
-# This functions sets the exit code to status and then exits. Don't use
-# exit directly, as it might not set the value of "$status" correctly, which is
-# used as an exit code in the trap handler routine set up by the check script.
-_exit()
-{
- test -n "$1" && status="$1"
- exit "$status"
-}
-
# Handle mkfs.$fstyp which does (or does not) require -f to overwrite
set_mkfs_prog_path_with_opts()
{
@@ -121,12 +112,6 @@ set_mkfs_prog_path_with_opts()
fi
}
-_fatal()
-{
- echo "$*"
- _exit 1
-}
-
export MKFS_PROG="$(type -P mkfs)"
[ "$MKFS_PROG" = "" ] && _fatal "mkfs not found"
diff --git a/common/exit b/common/exit
new file mode 100644
index 00000000..ad7e7498
--- /dev/null
+++ b/common/exit
@@ -0,0 +1,50 @@
+##/bin/bash
+
+# This functions sets the exit code to status and then exits. Don't use
+# exit directly, as it might not set the value of "$status" correctly, which is
+# used as an exit code in the trap handler routine set up by the check script.
+_exit()
+{
+ test -n "$1" && status="$1"
+ exit "$status"
+}
+
+_fatal()
+{
+ echo "$*"
+ _exit 1
+}
+
+_die()
+{
+ echo $@
+ _exit 1
+}
+
+die_now()
+{
+ _exit 1
+}
+
+# just plain bail out
+#
+_fail()
+{
+ echo "$*" | tee -a $seqres.full
+ echo "(see $seqres.full for details)"
+ _exit 1
+}
+
+# bail out, setting up .notrun file. Need to kill the filesystem check files
+# here, otherwise they are set incorrectly for the next test.
+#
+_notrun()
+{
+ echo "$*" > $seqres.notrun
+ echo "$seq not run: $*"
+ rm -f ${RESULT_DIR}/require_test*
+ rm -f ${RESULT_DIR}/require_scratch*
+
+ _exit 0
+}
+
diff --git a/common/preamble b/common/preamble
index ba029a34..9b6b4b26 100644
--- a/common/preamble
+++ b/common/preamble
@@ -33,6 +33,7 @@ _register_cleanup()
# explicitly as a member of the 'all' group.
_begin_fstest()
{
+ . common/exit
if [ -n "$seq" ]; then
echo "_begin_fstest can only be called once!"
_exit 1
diff --git a/common/punch b/common/punch
index 64d665d8..4e8ebcd7 100644
--- a/common/punch
+++ b/common/punch
@@ -222,11 +222,6 @@ _filter_bmap()
_coalesce_extents
}
-die_now()
-{
- _exit 1
-}
-
# test the different corner cases for zeroing a range:
#
# 1. into a hole
diff --git a/common/rc b/common/rc
index 9bed6dad..fac9b6da 100644
--- a/common/rc
+++ b/common/rc
@@ -1798,28 +1798,6 @@ _do()
return $ret
}
-# bail out, setting up .notrun file. Need to kill the filesystem check files
-# here, otherwise they are set incorrectly for the next test.
-#
-_notrun()
-{
- echo "$*" > $seqres.notrun
- echo "$seq not run: $*"
- rm -f ${RESULT_DIR}/require_test*
- rm -f ${RESULT_DIR}/require_scratch*
-
- _exit 0
-}
-
-# just plain bail out
-#
-_fail()
-{
- echo "$*" | tee -a $seqres.full
- echo "(see $seqres.full for details)"
- _exit 1
-}
-
#
# Tests whether $FSTYP should be exclude from this test.
#
@@ -3835,12 +3813,6 @@ _link_out_file()
_link_out_file_named $seqfull.out "$features"
}
-_die()
-{
- echo $@
- _exit 1
-}
-
# convert urandom incompressible data to compressible text data
_ddt()
{
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2 2/2] check: Replace exit with _exit in check
2025-04-29 6:52 [PATCH v2 0/2] common: Move exit related functions to common/exit Nirjhar Roy (IBM)
2025-04-29 6:52 ` [PATCH v2 1/2] common: Move exit related functions to a common/exit Nirjhar Roy (IBM)
@ 2025-04-29 6:52 ` Nirjhar Roy (IBM)
2025-04-29 23:59 ` Dave Chinner
1 sibling, 1 reply; 8+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-29 6:52 UTC (permalink / raw)
To: fstests
Cc: linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong, zlang, david,
nirjhar.roy.lists
Some of the "status=<val>;exit" and "exit <val>" were not
replace with _exit <val>. Doing it now.
Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
---
check | 44 ++++++++++++++++++--------------------------
1 file changed, 18 insertions(+), 26 deletions(-)
diff --git a/check b/check
index 9451c350..99d38492 100755
--- a/check
+++ b/check
@@ -47,6 +47,7 @@ export DIFF_LENGTH=${DIFF_LENGTH:=10}
# by default don't output timestamps
timestamp=${TIMESTAMP:=false}
+. common/exit
rm -f $tmp.list $tmp.tmp $tmp.grep $here/$iam.out $tmp.report.* $tmp.arglist
SRC_GROUPS="generic"
@@ -121,7 +122,7 @@ examples:
check -X .exclude -g auto
check -E ~/.xfstests.exclude
'
- exit 1
+ _exit 1
}
get_sub_group_list()
@@ -231,7 +232,7 @@ _prepare_test_list()
list=$(get_group_list $group)
if [ -z "$list" ]; then
echo "Group \"$group\" is empty or not defined?"
- exit 1
+ _exit 1
fi
for t in $list; do
@@ -316,14 +317,14 @@ while [ $# -gt 0 ]; do
-r)
if $exact_order; then
echo "Cannot specify -r and --exact-order."
- exit 1
+ _exit 1
fi
randomize=true
;;
--exact-order)
if $randomize; then
echo "Cannnot specify --exact-order and -r."
- exit 1
+ _exit 1
fi
exact_order=true
;;
@@ -361,7 +362,7 @@ done
# after processing args, overlay needs FSTYP set before sourcing common/config
if ! . ./common/rc; then
echo "check: failed to source common/rc"
- exit 1
+ _exit 1
fi
init_rc
@@ -373,8 +374,7 @@ if [ -n "$SOAK_DURATION" ]; then
sed -e 's/^\([.0-9]*\)\([a-z]\)*/\1 \2/g' | \
$AWK_PROG -f $here/src/soak_duration.awk)"
if [ $? -ne 0 ]; then
- status=1
- exit 1
+ _exit 1
fi
fi
@@ -385,8 +385,7 @@ if [ -n "$FUZZ_REWRITE_DURATION" ]; then
sed -e 's/^\([.0-9]*\)\([a-z]\)*/\1 \2/g' | \
$AWK_PROG -f $here/src/soak_duration.awk)"
if [ $? -ne 0 ]; then
- status=1
- exit 1
+ _exit 1
fi
fi
@@ -404,8 +403,7 @@ if $have_test_arg; then
while [ $# -gt 0 ]; do
case "$1" in
-*) echo "Arguments before tests, please!"
- status=1
- exit $status
+ _exit 1
;;
*) # Expand test pattern (e.g. xfs/???, *fs/001)
list=$(cd $SRC_DIR; echo $1)
@@ -438,7 +436,7 @@ fi
if [ `id -u` -ne 0 ]
then
echo "check: QA must be run as root"
- exit 1
+ _exit 1
fi
_wipe_counters()
@@ -721,9 +719,9 @@ _prepare_test_list
fstests_start_time="$(date +"%F %T")"
if $OPTIONS_HAVE_SECTIONS; then
- trap "_summary; exit \$status" 0 1 2 3 15
+ trap "_summary; _exit" 0 1 2 3 15
else
- trap "_wrapup; exit \$status" 0 1 2 3 15
+ trap "_wrapup; _exit" 0 1 2 3 15
fi
function run_section()
@@ -767,8 +765,7 @@ function run_section()
mkdir -p $RESULT_BASE
if [ ! -d $RESULT_BASE ]; then
echo "failed to create results directory $RESULT_BASE"
- status=1
- exit
+ _exit 1
fi
if $OPTIONS_HAVE_SECTIONS; then
@@ -784,8 +781,7 @@ function run_section()
echo "our local _test_mkfs routine ..."
cat $tmp.err
echo "check: failed to mkfs \$TEST_DEV using specified options"
- status=1
- exit
+ _exit 1
fi
# Previous FSTYP derived from TEST_DEV could be changed, source
# common/rc again with correct FSTYP to get FSTYP specific configs,
@@ -829,8 +825,7 @@ function run_section()
echo "our local _scratch_mkfs routine ..."
cat $tmp.err
echo "check: failed to mkfs \$SCRATCH_DEV using specified options"
- status=1
- exit
+ _exit 1
fi
# call the overridden mount - make sure the FS mounts with
@@ -840,8 +835,7 @@ function run_section()
echo "our local mount routine ..."
cat $tmp.err
echo "check: failed to mount \$SCRATCH_DEV using specified options"
- status=1
- exit
+ _exit 1
else
_scratch_unmount
fi
@@ -1104,12 +1098,10 @@ for ((iters = 0; iters < $iterations; iters++)) do
run_section $section
if [ "$sum_bad" != 0 ] && [ "$istop" = true ]; then
interrupt=false
- status=`expr $sum_bad != 0`
- exit
+ _exit `expr $sum_bad != 0`
fi
done
done
interrupt=false
-status=`expr $sum_bad != 0`
-exit
+_exit `expr $sum_bad != 0`
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] common: Move exit related functions to a common/exit
2025-04-29 6:52 ` [PATCH v2 1/2] common: Move exit related functions to a common/exit Nirjhar Roy (IBM)
@ 2025-04-29 14:07 ` Nirjhar Roy (IBM)
2025-04-29 23:51 ` Dave Chinner
1 sibling, 0 replies; 8+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-29 14:07 UTC (permalink / raw)
To: fstests; +Cc: linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong, zlang, david
On 4/29/25 12:22, Nirjhar Roy (IBM) wrote:
> Introduce a new file common/exit that will contain all the exit
> related functions. This will remove the dependencies these functions
> have on other non-related helper files and they can be indepedently
> sourced. This was suggested by Dave Chinner[1].
Sorry, I didn't notice this earlier. A similar change[c1] was already
posted by Dave.
[c1]
https://lore.kernel.org/all/20250417031208.1852171-4-david@fromorbit.com/
--NR
>
> [1] https://lore.kernel.org/linux-xfs/Z_UJ7XcpmtkPRhTr@dread.disaster.area/
> Suggested-by: Dave Chinner <david@fromorbit.com>
> Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
> ---
> common/config | 17 +----------------
> common/exit | 50 +++++++++++++++++++++++++++++++++++++++++++++++++
> common/preamble | 1 +
> common/punch | 5 -----
> common/rc | 28 ---------------------------
> 5 files changed, 52 insertions(+), 49 deletions(-)
> create mode 100644 common/exit
>
> diff --git a/common/config b/common/config
> index eada3971..6a60d144 100644
> --- a/common/config
> +++ b/common/config
> @@ -38,7 +38,7 @@
> # - this script shouldn't make any assertions about filesystem
> # validity or mountedness.
> #
> -
> +. common/exit
> . common/test_names
>
> # all tests should use a common language setting to prevent golden
> @@ -96,15 +96,6 @@ export LOCAL_CONFIGURE_OPTIONS=${LOCAL_CONFIGURE_OPTIONS:=--enable-readline=yes}
>
> export RECREATE_TEST_DEV=${RECREATE_TEST_DEV:=false}
>
> -# This functions sets the exit code to status and then exits. Don't use
> -# exit directly, as it might not set the value of "$status" correctly, which is
> -# used as an exit code in the trap handler routine set up by the check script.
> -_exit()
> -{
> - test -n "$1" && status="$1"
> - exit "$status"
> -}
> -
> # Handle mkfs.$fstyp which does (or does not) require -f to overwrite
> set_mkfs_prog_path_with_opts()
> {
> @@ -121,12 +112,6 @@ set_mkfs_prog_path_with_opts()
> fi
> }
>
> -_fatal()
> -{
> - echo "$*"
> - _exit 1
> -}
> -
> export MKFS_PROG="$(type -P mkfs)"
> [ "$MKFS_PROG" = "" ] && _fatal "mkfs not found"
>
> diff --git a/common/exit b/common/exit
> new file mode 100644
> index 00000000..ad7e7498
> --- /dev/null
> +++ b/common/exit
> @@ -0,0 +1,50 @@
> +##/bin/bash
> +
> +# This functions sets the exit code to status and then exits. Don't use
> +# exit directly, as it might not set the value of "$status" correctly, which is
> +# used as an exit code in the trap handler routine set up by the check script.
> +_exit()
> +{
> + test -n "$1" && status="$1"
> + exit "$status"
> +}
> +
> +_fatal()
> +{
> + echo "$*"
> + _exit 1
> +}
> +
> +_die()
> +{
> + echo $@
> + _exit 1
> +}
> +
> +die_now()
> +{
> + _exit 1
> +}
> +
> +# just plain bail out
> +#
> +_fail()
> +{
> + echo "$*" | tee -a $seqres.full
> + echo "(see $seqres.full for details)"
> + _exit 1
> +}
> +
> +# bail out, setting up .notrun file. Need to kill the filesystem check files
> +# here, otherwise they are set incorrectly for the next test.
> +#
> +_notrun()
> +{
> + echo "$*" > $seqres.notrun
> + echo "$seq not run: $*"
> + rm -f ${RESULT_DIR}/require_test*
> + rm -f ${RESULT_DIR}/require_scratch*
> +
> + _exit 0
> +}
> +
> diff --git a/common/preamble b/common/preamble
> index ba029a34..9b6b4b26 100644
> --- a/common/preamble
> +++ b/common/preamble
> @@ -33,6 +33,7 @@ _register_cleanup()
> # explicitly as a member of the 'all' group.
> _begin_fstest()
> {
> + . common/exit
> if [ -n "$seq" ]; then
> echo "_begin_fstest can only be called once!"
> _exit 1
> diff --git a/common/punch b/common/punch
> index 64d665d8..4e8ebcd7 100644
> --- a/common/punch
> +++ b/common/punch
> @@ -222,11 +222,6 @@ _filter_bmap()
> _coalesce_extents
> }
>
> -die_now()
> -{
> - _exit 1
> -}
> -
> # test the different corner cases for zeroing a range:
> #
> # 1. into a hole
> diff --git a/common/rc b/common/rc
> index 9bed6dad..fac9b6da 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -1798,28 +1798,6 @@ _do()
> return $ret
> }
>
> -# bail out, setting up .notrun file. Need to kill the filesystem check files
> -# here, otherwise they are set incorrectly for the next test.
> -#
> -_notrun()
> -{
> - echo "$*" > $seqres.notrun
> - echo "$seq not run: $*"
> - rm -f ${RESULT_DIR}/require_test*
> - rm -f ${RESULT_DIR}/require_scratch*
> -
> - _exit 0
> -}
> -
> -# just plain bail out
> -#
> -_fail()
> -{
> - echo "$*" | tee -a $seqres.full
> - echo "(see $seqres.full for details)"
> - _exit 1
> -}
> -
> #
> # Tests whether $FSTYP should be exclude from this test.
> #
> @@ -3835,12 +3813,6 @@ _link_out_file()
> _link_out_file_named $seqfull.out "$features"
> }
>
> -_die()
> -{
> - echo $@
> - _exit 1
> -}
> -
> # convert urandom incompressible data to compressible text data
> _ddt()
> {
--
Nirjhar Roy
Linux Kernel Developer
IBM, Bangalore
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] common: Move exit related functions to a common/exit
2025-04-29 6:52 ` [PATCH v2 1/2] common: Move exit related functions to a common/exit Nirjhar Roy (IBM)
2025-04-29 14:07 ` Nirjhar Roy (IBM)
@ 2025-04-29 23:51 ` Dave Chinner
2025-04-30 6:13 ` Nirjhar Roy (IBM)
1 sibling, 1 reply; 8+ messages in thread
From: Dave Chinner @ 2025-04-29 23:51 UTC (permalink / raw)
To: Nirjhar Roy (IBM)
Cc: fstests, linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong,
zlang
On Tue, Apr 29, 2025 at 06:52:53AM +0000, Nirjhar Roy (IBM) wrote:
> Introduce a new file common/exit that will contain all the exit
> related functions. This will remove the dependencies these functions
> have on other non-related helper files and they can be indepedently
> sourced. This was suggested by Dave Chinner[1].
>
> [1] https://lore.kernel.org/linux-xfs/Z_UJ7XcpmtkPRhTr@dread.disaster.area/
> Suggested-by: Dave Chinner <david@fromorbit.com>
> Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
> ---
> common/config | 17 +----------------
> common/exit | 50 +++++++++++++++++++++++++++++++++++++++++++++++++
> common/preamble | 1 +
> common/punch | 5 -----
> common/rc | 28 ---------------------------
> 5 files changed, 52 insertions(+), 49 deletions(-)
> create mode 100644 common/exit
Neither of my replys to v1 made it to the list [1], so I'll have to
repeat what I said here.
I did point out that I had already sent this out here:
https://lore.kernel.org/fstests/20250417031208.1852171-4-david@fromorbit.com/
but now this version is mostly the same (except for things noted
below) so I'm good with this.
>
> diff --git a/common/config b/common/config
> index eada3971..6a60d144 100644
> --- a/common/config
> +++ b/common/config
> @@ -38,7 +38,7 @@
> # - this script shouldn't make any assertions about filesystem
> # validity or mountedness.
> #
> -
> +. common/exit
> . common/test_names
This isn't needed. Include it in check and other high level scripts
(which need to include this, anyway) before including common/config.
> diff --git a/common/exit b/common/exit
> new file mode 100644
> index 00000000..ad7e7498
> --- /dev/null
> +++ b/common/exit
> @@ -0,0 +1,50 @@
> +##/bin/bash
> +
> +# This functions sets the exit code to status and then exits. Don't use
> +# exit directly, as it might not set the value of "$status" correctly, which is
> +# used as an exit code in the trap handler routine set up by the check script.
> +_exit()
> +{
> + test -n "$1" && status="$1"
> + exit "$status"
> +}
> +
> +_fatal()
> +{
> + echo "$*"
> + _exit 1
> +}
> +
> +_die()
> +{
> + echo $@
> + _exit 1
> +}
This should be removed and replaced with _fatal
> +die_now()
> +{
> + _exit 1
> +}
And this should be removed as well.
i.e. These two functions are only used by common/punch, so change
them to use _fatal and _exit rather than duplicating the wrappers.
> diff --git a/common/preamble b/common/preamble
> index ba029a34..9b6b4b26 100644
> --- a/common/preamble
> +++ b/common/preamble
> @@ -33,6 +33,7 @@ _register_cleanup()
> # explicitly as a member of the 'all' group.
> _begin_fstest()
> {
> + . common/exit
> if [ -n "$seq" ]; then
> echo "_begin_fstest can only be called once!"
> _exit 1
Please leave a blank line between includes and unrelated code.
-Dave.
[1] Thanks Google, for removing mail auth methods without any
warning and not reporting permanent delivery failure on attempts
to send mail an unsupported auth method.
--
Dave Chinner
david@fromorbit.com
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/2] check: Replace exit with _exit in check
2025-04-29 6:52 ` [PATCH v2 2/2] check: Replace exit with _exit in check Nirjhar Roy (IBM)
@ 2025-04-29 23:59 ` Dave Chinner
2025-04-30 12:13 ` Nirjhar Roy (IBM)
0 siblings, 1 reply; 8+ messages in thread
From: Dave Chinner @ 2025-04-29 23:59 UTC (permalink / raw)
To: Nirjhar Roy (IBM)
Cc: fstests, linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong,
zlang
On Tue, Apr 29, 2025 at 06:52:54AM +0000, Nirjhar Roy (IBM) wrote:
> Some of the "status=<val>;exit" and "exit <val>" were not
> replace with _exit <val>. Doing it now.
>
> Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
> ---
> check | 44 ++++++++++++++++++--------------------------
> 1 file changed, 18 insertions(+), 26 deletions(-)
>
> diff --git a/check b/check
> index 9451c350..99d38492 100755
> --- a/check
> +++ b/check
> @@ -47,6 +47,7 @@ export DIFF_LENGTH=${DIFF_LENGTH:=10}
> # by default don't output timestamps
> timestamp=${TIMESTAMP:=false}
>
> +. common/exit
> rm -f $tmp.list $tmp.tmp $tmp.grep $here/$iam.out $tmp.report.* $tmp.arglist
>
> SRC_GROUPS="generic"
> @@ -121,7 +122,7 @@ examples:
> check -X .exclude -g auto
> check -E ~/.xfstests.exclude
> '
> - exit 1
> + _exit 1
> }
>
> get_sub_group_list()
> @@ -231,7 +232,7 @@ _prepare_test_list()
> list=$(get_group_list $group)
> if [ -z "$list" ]; then
> echo "Group \"$group\" is empty or not defined?"
> - exit 1
> + _exit 1
> fi
>
> for t in $list; do
This is now:
_fatal "Group \"$group\" is empty or not defined?"
> @@ -316,14 +317,14 @@ while [ $# -gt 0 ]; do
> -r)
> if $exact_order; then
> echo "Cannot specify -r and --exact-order."
> - exit 1
> + _exit 1
> fi
> randomize=true
> ;;
> --exact-order)
> if $randomize; then
> echo "Cannnot specify --exact-order and -r."
> - exit 1
> + _exit 1
> fi
> exact_order=true
> ;;
Same.
> @@ -361,7 +362,7 @@ done
> # after processing args, overlay needs FSTYP set before sourcing common/config
> if ! . ./common/rc; then
> echo "check: failed to source common/rc"
> - exit 1
> + _exit 1
> fi
>
> init_rc
Same.
> @@ -373,8 +374,7 @@ if [ -n "$SOAK_DURATION" ]; then
> sed -e 's/^\([.0-9]*\)\([a-z]\)*/\1 \2/g' | \
> $AWK_PROG -f $here/src/soak_duration.awk)"
> if [ $? -ne 0 ]; then
> - status=1
> - exit 1
> + _exit 1
> fi
> fi
>
> @@ -385,8 +385,7 @@ if [ -n "$FUZZ_REWRITE_DURATION" ]; then
> sed -e 's/^\([.0-9]*\)\([a-z]\)*/\1 \2/g' | \
> $AWK_PROG -f $here/src/soak_duration.awk)"
> if [ $? -ne 0 ]; then
> - status=1
> - exit 1
> + _exit 1
> fi
> fi
>
> @@ -404,8 +403,7 @@ if $have_test_arg; then
> while [ $# -gt 0 ]; do
> case "$1" in
> -*) echo "Arguments before tests, please!"
> - status=1
> - exit $status
> + _exit 1
_fatal
> ;;
> *) # Expand test pattern (e.g. xfs/???, *fs/001)
> list=$(cd $SRC_DIR; echo $1)
> @@ -438,7 +436,7 @@ fi
> if [ `id -u` -ne 0 ]
> then
> echo "check: QA must be run as root"
> - exit 1
> + _exit 1
> fi
Same
>
> _wipe_counters()
> @@ -721,9 +719,9 @@ _prepare_test_list
> fstests_start_time="$(date +"%F %T")"
>
> if $OPTIONS_HAVE_SECTIONS; then
> - trap "_summary; exit \$status" 0 1 2 3 15
> + trap "_summary; _exit" 0 1 2 3 15
> else
> - trap "_wrapup; exit \$status" 0 1 2 3 15
> + trap "_wrapup; _exit" 0 1 2 3 15
> fi
Please add a comment explaining that _exit will capture $status
that has been previously set as the exit value.
Realistically, though, I think 'exit $status' is much better here
because it clearly documents that we are capturing $status as the
exit value from the trap rather than having to add a comment to make
it clear that $status is the exit value of the trap...
> function run_section()
> @@ -767,8 +765,7 @@ function run_section()
> mkdir -p $RESULT_BASE
> if [ ! -d $RESULT_BASE ]; then
> echo "failed to create results directory $RESULT_BASE"
> - status=1
> - exit
> + _exit 1
> fi
_fatal
> if $OPTIONS_HAVE_SECTIONS; then
> @@ -784,8 +781,7 @@ function run_section()
> echo "our local _test_mkfs routine ..."
> cat $tmp.err
> echo "check: failed to mkfs \$TEST_DEV using specified options"
> - status=1
> - exit
> + _exit 1
> fi
> # Previous FSTYP derived from TEST_DEV could be changed, source
> # common/rc again with correct FSTYP to get FSTYP specific configs,
> @@ -829,8 +825,7 @@ function run_section()
> echo "our local _scratch_mkfs routine ..."
> cat $tmp.err
> echo "check: failed to mkfs \$SCRATCH_DEV using specified options"
> - status=1
> - exit
> + _exit 1
> fi
>
> # call the overridden mount - make sure the FS mounts with
> @@ -840,8 +835,7 @@ function run_section()
> echo "our local mount routine ..."
> cat $tmp.err
> echo "check: failed to mount \$SCRATCH_DEV using specified options"
> - status=1
> - exit
> + _exit 1
> else
> _scratch_unmount
> fi
Same for all these.
-Dave.
--
Dave Chinner
david@fromorbit.com
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 1/2] common: Move exit related functions to a common/exit
2025-04-29 23:51 ` Dave Chinner
@ 2025-04-30 6:13 ` Nirjhar Roy (IBM)
0 siblings, 0 replies; 8+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-30 6:13 UTC (permalink / raw)
To: Dave Chinner
Cc: fstests, linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong,
zlang
On 4/30/25 05:21, Dave Chinner wrote:
> On Tue, Apr 29, 2025 at 06:52:53AM +0000, Nirjhar Roy (IBM) wrote:
>> Introduce a new file common/exit that will contain all the exit
>> related functions. This will remove the dependencies these functions
>> have on other non-related helper files and they can be indepedently
>> sourced. This was suggested by Dave Chinner[1].
>>
>> [1] https://lore.kernel.org/linux-xfs/Z_UJ7XcpmtkPRhTr@dread.disaster.area/
>> Suggested-by: Dave Chinner <david@fromorbit.com>
>> Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
>> ---
>> common/config | 17 +----------------
>> common/exit | 50 +++++++++++++++++++++++++++++++++++++++++++++++++
>> common/preamble | 1 +
>> common/punch | 5 -----
>> common/rc | 28 ---------------------------
>> 5 files changed, 52 insertions(+), 49 deletions(-)
>> create mode 100644 common/exit
> Neither of my replys to v1 made it to the list [1], so I'll have to
> repeat what I said here.
I am really sorry. I didn't get any of your feedback in [v1]. I will
address them here.
[v1]
https://lore.kernel.org/all/cover.1745390030.git.nirjhar.roy.lists@gmail.com/
>
> I did point out that I had already sent this out here:
>
> https://lore.kernel.org/fstests/20250417031208.1852171-4-david@fromorbit.com/
>
> but now this version is mostly the same (except for things noted
> below) so I'm good with this.
>
>> diff --git a/common/config b/common/config
>> index eada3971..6a60d144 100644
>> --- a/common/config
>> +++ b/common/config
>> @@ -38,7 +38,7 @@
>> # - this script shouldn't make any assertions about filesystem
>> # validity or mountedness.
>> #
>> -
>> +. common/exit
>> . common/test_names
> This isn't needed. Include it in check and other high level scripts
> (which need to include this, anyway) before including common/config.
Yeah, right.
>
>> diff --git a/common/exit b/common/exit
>> new file mode 100644
>> index 00000000..ad7e7498
>> --- /dev/null
>> +++ b/common/exit
>> @@ -0,0 +1,50 @@
>> +##/bin/bash
>> +
>> +# This functions sets the exit code to status and then exits. Don't use
>> +# exit directly, as it might not set the value of "$status" correctly, which is
>> +# used as an exit code in the trap handler routine set up by the check script.
>> +_exit()
>> +{
>> + test -n "$1" && status="$1"
>> + exit "$status"
>> +}
>> +
>> +_fatal()
>> +{
>> + echo "$*"
>> + _exit 1
>> +}
>> +
>> +_die()
>> +{
>> + echo $@
>> + _exit 1
>> +}
> This should be removed and replaced with _fatal
Okay.
>
>> +die_now()
>> +{
>> + _exit 1
>> +}
> And this should be removed as well.
>
> i.e. These two functions are only used by common/punch, so change
> them to use _fatal and _exit rather than duplicating the wrappers.
Okay.
>
>> diff --git a/common/preamble b/common/preamble
>> index ba029a34..9b6b4b26 100644
>> --- a/common/preamble
>> +++ b/common/preamble
>> @@ -33,6 +33,7 @@ _register_cleanup()
>> # explicitly as a member of the 'all' group.
>> _begin_fstest()
>> {
>> + . common/exit
>> if [ -n "$seq" ]; then
>> echo "_begin_fstest can only be called once!"
>> _exit 1
> Please leave a blank line between includes and unrelated code.
Sure.
--NR
>
> -Dave.
>
> [1] Thanks Google, for removing mail auth methods without any
> warning and not reporting permanent delivery failure on attempts
> to send mail an unsupported auth method.
>
--
Nirjhar Roy
Linux Kernel Developer
IBM, Bangalore
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2 2/2] check: Replace exit with _exit in check
2025-04-29 23:59 ` Dave Chinner
@ 2025-04-30 12:13 ` Nirjhar Roy (IBM)
0 siblings, 0 replies; 8+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-30 12:13 UTC (permalink / raw)
To: Dave Chinner
Cc: fstests, linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong,
zlang
On 4/30/25 05:29, Dave Chinner wrote:
> On Tue, Apr 29, 2025 at 06:52:54AM +0000, Nirjhar Roy (IBM) wrote:
>> Some of the "status=<val>;exit" and "exit <val>" were not
>> replace with _exit <val>. Doing it now.
>>
>> Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
>> ---
>> check | 44 ++++++++++++++++++--------------------------
>> 1 file changed, 18 insertions(+), 26 deletions(-)
>>
>> diff --git a/check b/check
>> index 9451c350..99d38492 100755
>> --- a/check
>> +++ b/check
>> @@ -47,6 +47,7 @@ export DIFF_LENGTH=${DIFF_LENGTH:=10}
>> # by default don't output timestamps
>> timestamp=${TIMESTAMP:=false}
>>
>> +. common/exit
>> rm -f $tmp.list $tmp.tmp $tmp.grep $here/$iam.out $tmp.report.* $tmp.arglist
>>
>> SRC_GROUPS="generic"
>> @@ -121,7 +122,7 @@ examples:
>> check -X .exclude -g auto
>> check -E ~/.xfstests.exclude
>> '
>> - exit 1
>> + _exit 1
>> }
>>
>> get_sub_group_list()
>> @@ -231,7 +232,7 @@ _prepare_test_list()
>> list=$(get_group_list $group)
>> if [ -z "$list" ]; then
>> echo "Group \"$group\" is empty or not defined?"
>> - exit 1
>> + _exit 1
>> fi
>>
>> for t in $list; do
> This is now:
>
> _fatal "Group \"$group\" is empty or not defined?"
Noted.
>
>> @@ -316,14 +317,14 @@ while [ $# -gt 0 ]; do
>> -r)
>> if $exact_order; then
>> echo "Cannot specify -r and --exact-order."
>> - exit 1
>> + _exit 1
>> fi
>> randomize=true
>> ;;
>> --exact-order)
>> if $randomize; then
>> echo "Cannnot specify --exact-order and -r."
>> - exit 1
>> + _exit 1
>> fi
>> exact_order=true
>> ;;
> Same.
Noted.
>
>> @@ -361,7 +362,7 @@ done
>> # after processing args, overlay needs FSTYP set before sourcing common/config
>> if ! . ./common/rc; then
>> echo "check: failed to source common/rc"
>> - exit 1
>> + _exit 1
>> fi
>>
>> init_rc
> Same.
Noted.
>
>> @@ -373,8 +374,7 @@ if [ -n "$SOAK_DURATION" ]; then
>> sed -e 's/^\([.0-9]*\)\([a-z]\)*/\1 \2/g' | \
>> $AWK_PROG -f $here/src/soak_duration.awk)"
>> if [ $? -ne 0 ]; then
>> - status=1
>> - exit 1
>> + _exit 1
>> fi
>> fi
>>
>> @@ -385,8 +385,7 @@ if [ -n "$FUZZ_REWRITE_DURATION" ]; then
>> sed -e 's/^\([.0-9]*\)\([a-z]\)*/\1 \2/g' | \
>> $AWK_PROG -f $here/src/soak_duration.awk)"
>> if [ $? -ne 0 ]; then
>> - status=1
>> - exit 1
>> + _exit 1
>> fi
>> fi
>>
>> @@ -404,8 +403,7 @@ if $have_test_arg; then
>> while [ $# -gt 0 ]; do
>> case "$1" in
>> -*) echo "Arguments before tests, please!"
>> - status=1
>> - exit $status
>> + _exit 1
> _fatal
Noted.
>
>> ;;
>> *) # Expand test pattern (e.g. xfs/???, *fs/001)
>> list=$(cd $SRC_DIR; echo $1)
>> @@ -438,7 +436,7 @@ fi
>> if [ `id -u` -ne 0 ]
>> then
>> echo "check: QA must be run as root"
>> - exit 1
>> + _exit 1
>> fi
> Same
Noted.
>
>>
>> _wipe_counters()
>> @@ -721,9 +719,9 @@ _prepare_test_list
>> fstests_start_time="$(date +"%F %T")"
>>
>> if $OPTIONS_HAVE_SECTIONS; then
>> - trap "_summary; exit \$status" 0 1 2 3 15
>> + trap "_summary; _exit" 0 1 2 3 15
>> else
>> - trap "_wrapup; exit \$status" 0 1 2 3 15
>> + trap "_wrapup; _exit" 0 1 2 3 15
>> fi
> Please add a comment explaining that _exit will capture $status
> that has been previously set as the exit value.
>
> Realistically, though, I think 'exit $status' is much better here
> because it clearly documents that we are capturing $status as the
> exit value from the trap rather than having to add a comment to make
> it clear that $status is the exit value of the trap...
Yeah, I will use "exit \$status" and mention in comments as to why we
aren't using _exit(), although we can.
>
>> function run_section()
>> @@ -767,8 +765,7 @@ function run_section()
>> mkdir -p $RESULT_BASE
>> if [ ! -d $RESULT_BASE ]; then
>> echo "failed to create results directory $RESULT_BASE"
>> - status=1
>> - exit
>> + _exit 1
>> fi
> _fatal
Noted.
>
>> if $OPTIONS_HAVE_SECTIONS; then
>> @@ -784,8 +781,7 @@ function run_section()
>> echo "our local _test_mkfs routine ..."
>> cat $tmp.err
>> echo "check: failed to mkfs \$TEST_DEV using specified options"
>> - status=1
>> - exit
>> + _exit 1
>> fi
>> # Previous FSTYP derived from TEST_DEV could be changed, source
>> # common/rc again with correct FSTYP to get FSTYP specific configs,
>> @@ -829,8 +825,7 @@ function run_section()
>> echo "our local _scratch_mkfs routine ..."
>> cat $tmp.err
>> echo "check: failed to mkfs \$SCRATCH_DEV using specified options"
>> - status=1
>> - exit
>> + _exit 1
>> fi
>>
>> # call the overridden mount - make sure the FS mounts with
>> @@ -840,8 +835,7 @@ function run_section()
>> echo "our local mount routine ..."
>> cat $tmp.err
>> echo "check: failed to mount \$SCRATCH_DEV using specified options"
>> - status=1
>> - exit
>> + _exit 1
>> else
>> _scratch_unmount
>> fi
> Same for all these.
Noted.
>
> -Dave.
--
Nirjhar Roy
Linux Kernel Developer
IBM, Bangalore
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-04-30 12:14 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-29 6:52 [PATCH v2 0/2] common: Move exit related functions to common/exit Nirjhar Roy (IBM)
2025-04-29 6:52 ` [PATCH v2 1/2] common: Move exit related functions to a common/exit Nirjhar Roy (IBM)
2025-04-29 14:07 ` Nirjhar Roy (IBM)
2025-04-29 23:51 ` Dave Chinner
2025-04-30 6:13 ` Nirjhar Roy (IBM)
2025-04-29 6:52 ` [PATCH v2 2/2] check: Replace exit with _exit in check Nirjhar Roy (IBM)
2025-04-29 23:59 ` Dave Chinner
2025-04-30 12:13 ` Nirjhar Roy (IBM)
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox