* [PATCH v3 0/2] common: Move exit related functions to common/exit
@ 2025-04-30 12:45 Nirjhar Roy (IBM)
2025-04-30 12:45 ` [PATCH v3 1/2] common: Move exit related functions to a common/exit Nirjhar Roy (IBM)
` (2 more replies)
0 siblings, 3 replies; 11+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-30 12:45 UTC (permalink / raw)
To: fstests
Cc: linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong, zlang, david,
hch, 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].
[v2] -> v3
Addressed Dave's feedbacks.
In patch [1/2]
- Removed _die() and die_now() from common/exit
- Replaced die_now() with _fatal in common/punch
- Removed sourcing of common/exit and common/test_names from common/config
and moved them to the beginning of check.
- Added sourcing of common/test_names in _begin_fstest() since common/config
is no more sourcing common/test_names.
- Added a blank line in _begin_fstest() after sourcing common/{exit,test_names}
In patch [2/2]
- Replaced "_exit 1" with _fatal and "echo <error message>; _exit 1" with
_fatal <error message>.
- Reverted to "exit \$status" in the trap handler registration in check - just
to make it more obvious to the reader that we are capturing $status as the
final exit value.
[v1] https://lore.kernel.org/all/cover.1745390030.git.nirjhar.roy.lists@gmail.com/
[v2] https://lore.kernel.org/all/cover.1745908976.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 _fatal and _exit in check
check | 54 ++++++++++++++++++-------------------------------
common/config | 17 ----------------
common/exit | 39 +++++++++++++++++++++++++++++++++++
common/preamble | 3 +++
common/punch | 39 ++++++++++++++++-------------------
common/rc | 28 -------------------------
6 files changed, 79 insertions(+), 101 deletions(-)
create mode 100644 common/exit
--
2.34.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 1/2] common: Move exit related functions to a common/exit
2025-04-30 12:45 [PATCH v3 0/2] common: Move exit related functions to common/exit Nirjhar Roy (IBM)
@ 2025-04-30 12:45 ` Nirjhar Roy (IBM)
2025-05-01 3:17 ` Ritesh Harjani
2025-04-30 12:45 ` [PATCH v3 2/2] check: Replace exit with _fatal and _exit in check Nirjhar Roy (IBM)
2025-05-06 8:49 ` [PATCH v3 0/2] common: Move exit related functions to common/exit Nirjhar Roy (IBM)
2 siblings, 1 reply; 11+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-30 12:45 UTC (permalink / raw)
To: fstests
Cc: linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong, zlang, david,
hch, 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].
While moving the exit related functions, remove _die() and die_now()
and replace die_now with _fatal(). It is of no use to keep the
unnecessary wrappers.
[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>
---
check | 2 ++
common/config | 17 -----------------
common/exit | 39 +++++++++++++++++++++++++++++++++++++++
common/preamble | 3 +++
common/punch | 39 +++++++++++++++++----------------------
common/rc | 28 ----------------------------
6 files changed, 61 insertions(+), 67 deletions(-)
create mode 100644 common/exit
diff --git a/check b/check
index 9451c350..bd84f213 100755
--- a/check
+++ b/check
@@ -46,6 +46,8 @@ export DIFF_LENGTH=${DIFF_LENGTH:=10}
# by default don't output timestamps
timestamp=${TIMESTAMP:=false}
+. common/exit
+. common/test_names
rm -f $tmp.list $tmp.tmp $tmp.grep $here/$iam.out $tmp.report.* $tmp.arglist
diff --git a/common/config b/common/config
index eada3971..22b52432 100644
--- a/common/config
+++ b/common/config
@@ -39,8 +39,6 @@
# validity or mountedness.
#
-. common/test_names
-
# all tests should use a common language setting to prevent golden
# output mismatches.
export LANG=C
@@ -96,15 +94,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 +110,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..222c79b7
--- /dev/null
+++ b/common/exit
@@ -0,0 +1,39 @@
+##/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
+}
+
+# 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..51d03396 100644
--- a/common/preamble
+++ b/common/preamble
@@ -33,6 +33,9 @@ _register_cleanup()
# explicitly as a member of the 'all' group.
_begin_fstest()
{
+ . common/exit
+ . common/test_names
+
if [ -n "$seq" ]; then
echo "_begin_fstest can only be called once!"
_exit 1
diff --git a/common/punch b/common/punch
index 64d665d8..ddbe757a 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
@@ -305,7 +300,7 @@ _test_generic_punch()
$XFS_IO_PROG -f -c "truncate $_20k" \
-c "$zero_cmd $_4k $_8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
- [ $? -ne 0 ] && die_now
+ [ $? -ne 0 ] && _fatal
_md5_checksum $testfile
echo " 2. into allocated space"
@@ -316,7 +311,7 @@ _test_generic_punch()
-c "pwrite 0 $_20k" $sync_cmd \
-c "$zero_cmd $_4k $_8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
- [ $? -ne 0 ] && die_now
+ [ $? -ne 0 ] && _fatal
_md5_checksum $testfile
if [ "$unwritten_tests" ]; then
@@ -328,7 +323,7 @@ _test_generic_punch()
-c "$alloc_cmd 0 $_20k" \
-c "$zero_cmd $_4k $_8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
- [ $? -ne 0 ] && die_now
+ [ $? -ne 0 ] && _fatal
_md5_checksum $testfile
fi
@@ -340,7 +335,7 @@ _test_generic_punch()
-c "pwrite $_8k $_8k" $sync_cmd \
-c "$zero_cmd $_4k $_8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
- [ $? -ne 0 ] && die_now
+ [ $? -ne 0 ] && _fatal
_md5_checksum $testfile
if [ "$unwritten_tests" ]; then
@@ -352,7 +347,7 @@ _test_generic_punch()
-c "$alloc_cmd $_8k $_8k" \
-c "$zero_cmd $_4k $_8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
- [ $? -ne 0 ] && die_now
+ [ $? -ne 0 ] && _fatal
_md5_checksum $testfile
fi
@@ -364,7 +359,7 @@ _test_generic_punch()
-c "pwrite 0 $_8k" $sync_cmd \
-c "$zero_cmd $_4k $_8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
- [ $? -ne 0 ] && die_now
+ [ $? -ne 0 ] && _fatal
_md5_checksum $testfile
if [ "$unwritten_tests" ]; then
@@ -377,7 +372,7 @@ _test_generic_punch()
-c "$alloc_cmd $_8k $_8k" \
-c "$zero_cmd $_4k $_8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
- [ $? -ne 0 ] && die_now
+ [ $? -ne 0 ] && _fatal
_md5_checksum $testfile
echo " 8. unwritten -> hole"
@@ -388,7 +383,7 @@ _test_generic_punch()
-c "$alloc_cmd 0 $_8k" \
-c "$zero_cmd $_4k $_8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
- [ $? -ne 0 ] && die_now
+ [ $? -ne 0 ] && _fatal
_md5_checksum $testfile
echo " 9. unwritten -> data"
@@ -400,7 +395,7 @@ _test_generic_punch()
-c "pwrite $_8k $_8k" $sync_cmd \
-c "$zero_cmd $_4k $_8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
- [ $? -ne 0 ] && die_now
+ [ $? -ne 0 ] && _fatal
_md5_checksum $testfile
fi
@@ -412,7 +407,7 @@ _test_generic_punch()
-c "pwrite $_8k $_4k" $sync_cmd \
-c "$zero_cmd $_4k $_12k" \
-c "$map_cmd -v" $testfile | $filter_cmd
- [ $? -ne 0 ] && die_now
+ [ $? -ne 0 ] && _fatal
_md5_checksum $testfile
echo " 11. data -> hole -> data"
@@ -426,7 +421,7 @@ _test_generic_punch()
-c "$punch_cmd $_8k $_4k" \
-c "$zero_cmd $_4k $_12k" \
-c "$map_cmd -v" $testfile | $filter_cmd
- [ $? -ne 0 ] && die_now
+ [ $? -ne 0 ] && _fatal
_md5_checksum $testfile
if [ "$unwritten_tests" ]; then
@@ -439,7 +434,7 @@ _test_generic_punch()
-c "pwrite $_8k $_4k" $sync_cmd \
-c "$zero_cmd $_4k $_12k" \
-c "$map_cmd -v" $testfile | $filter_cmd
- [ $? -ne 0 ] && die_now
+ [ $? -ne 0 ] && _fatal
_md5_checksum $testfile
echo " 13. data -> unwritten -> data"
@@ -452,7 +447,7 @@ _test_generic_punch()
-c "pwrite $_12k $_8k" -c "fsync" \
-c "$zero_cmd $_4k $_12k" \
-c "$map_cmd -v" $testfile | $filter_cmd
- [ $? -ne 0 ] && die_now
+ [ $? -ne 0 ] && _fatal
_md5_checksum $testfile
fi
@@ -466,7 +461,7 @@ _test_generic_punch()
-c "pwrite 0 $_20k" $sync_cmd \
-c "$zero_cmd $_12k $_8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
- [ $? -ne 0 ] && die_now
+ [ $? -ne 0 ] && _fatal
_md5_checksum $testfile
fi
@@ -483,7 +478,7 @@ _test_generic_punch()
-c "pwrite 0 $_20k" $sync_cmd \
-c "$zero_cmd 0 $_8k" \
-c "$map_cmd -v" $testfile | $filter_cmd
- [ $? -ne 0 ] && die_now
+ [ $? -ne 0 ] && _fatal
_md5_checksum $testfile
# If zero_cmd is fcollpase, don't check unaligned offsets
@@ -512,7 +507,7 @@ _test_generic_punch()
-c "fadvise -d" \
-c "$map_cmd -v" $testfile | $filter_cmd
diff $testfile $testfile.2
- [ $? -ne 0 ] && die_now
+ [ $? -ne 0 ] && _fatal
rm -f $testfile.2
_md5_checksum $testfile
@@ -532,7 +527,7 @@ _test_generic_punch()
-c "$zero_cmd 128 128" \
-c "$map_cmd -v" $testfile | $filter_cmd | \
sed -e "s/\.\.[0-9]*\]/..7\]/"
- [ $? -ne 0 ] && die_now
+ [ $? -ne 0 ] && _fatal
od -x $testfile | head -n -1
}
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] 11+ messages in thread
* [PATCH v3 2/2] check: Replace exit with _fatal and _exit in check
2025-04-30 12:45 [PATCH v3 0/2] common: Move exit related functions to common/exit Nirjhar Roy (IBM)
2025-04-30 12:45 ` [PATCH v3 1/2] common: Move exit related functions to a common/exit Nirjhar Roy (IBM)
@ 2025-04-30 12:45 ` Nirjhar Roy (IBM)
2025-05-01 3:31 ` Ritesh Harjani
2025-05-06 8:49 ` [PATCH v3 0/2] common: Move exit related functions to common/exit Nirjhar Roy (IBM)
2 siblings, 1 reply; 11+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-30 12:45 UTC (permalink / raw)
To: fstests
Cc: linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong, zlang, david,
hch, nirjhar.roy.lists
Some of the "status=<val>;exit" and "exit <val>" were not
replaced with _exit <val> and _fatal. Doing it now.
Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
---
check | 52 ++++++++++++++++++----------------------------------
1 file changed, 18 insertions(+), 34 deletions(-)
diff --git a/check b/check
index bd84f213..ede54f69 100755
--- a/check
+++ b/check
@@ -123,7 +123,7 @@ examples:
check -X .exclude -g auto
check -E ~/.xfstests.exclude
'
- exit 1
+ _fatal
}
get_sub_group_list()
@@ -232,8 +232,7 @@ _prepare_test_list()
for group in $GROUP_LIST; do
list=$(get_group_list $group)
if [ -z "$list" ]; then
- echo "Group \"$group\" is empty or not defined?"
- exit 1
+ _fatal "Group \"$group\" is empty or not defined?"
fi
for t in $list; do
@@ -317,15 +316,13 @@ while [ $# -gt 0 ]; do
-n) showme=true ;;
-r)
if $exact_order; then
- echo "Cannot specify -r and --exact-order."
- exit 1
+ _fatal "Cannot specify -r and --exact-order."
fi
randomize=true
;;
--exact-order)
if $randomize; then
- echo "Cannnot specify --exact-order and -r."
- exit 1
+ _fatal "Cannnot specify --exact-order and -r."
fi
exact_order=true
;;
@@ -362,8 +359,7 @@ done
# we need common/rc, that also sources common/config. We need to source it
# after processing args, overlay needs FSTYP set before sourcing common/config
if ! . ./common/rc; then
- echo "check: failed to source common/rc"
- exit 1
+ _fatal "check: failed to source common/rc"
fi
init_rc
@@ -375,8 +371,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
+ _fatal
fi
fi
@@ -387,8 +382,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
+ _fatal
fi
fi
@@ -405,9 +399,7 @@ fi
if $have_test_arg; then
while [ $# -gt 0 ]; do
case "$1" in
- -*) echo "Arguments before tests, please!"
- status=1
- exit $status
+ -*) _fatal "Arguments before tests, please!"
;;
*) # Expand test pattern (e.g. xfs/???, *fs/001)
list=$(cd $SRC_DIR; echo $1)
@@ -439,8 +431,7 @@ fi
if [ `id -u` -ne 0 ]
then
- echo "check: QA must be run as root"
- exit 1
+ _fatal "check: QA must be run as root"
fi
_wipe_counters()
@@ -722,6 +713,9 @@ _detect_kmemleak
_prepare_test_list
fstests_start_time="$(date +"%F %T")"
+# We are not using _exit in the trap handler so that it is obvious to the reader
+# that we are using the last set value of "status" before we finally exit
+# from the check script.
if $OPTIONS_HAVE_SECTIONS; then
trap "_summary; exit \$status" 0 1 2 3 15
else
@@ -768,9 +762,7 @@ function run_section()
mkdir -p $RESULT_BASE
if [ ! -d $RESULT_BASE ]; then
- echo "failed to create results directory $RESULT_BASE"
- status=1
- exit
+ _fatal "failed to create results directory $RESULT_BASE"
fi
if $OPTIONS_HAVE_SECTIONS; then
@@ -785,9 +777,7 @@ function run_section()
then
echo "our local _test_mkfs routine ..."
cat $tmp.err
- echo "check: failed to mkfs \$TEST_DEV using specified options"
- status=1
- exit
+ _fatal "check: failed to mkfs \$TEST_DEV using specified options"
fi
# Previous FSTYP derived from TEST_DEV could be changed, source
# common/rc again with correct FSTYP to get FSTYP specific configs,
@@ -830,9 +820,7 @@ function run_section()
then
echo "our local _scratch_mkfs routine ..."
cat $tmp.err
- echo "check: failed to mkfs \$SCRATCH_DEV using specified options"
- status=1
- exit
+ _fatal "check: failed to mkfs \$SCRATCH_DEV using specified options"
fi
# call the overridden mount - make sure the FS mounts with
@@ -841,9 +829,7 @@ function run_section()
then
echo "our local mount routine ..."
cat $tmp.err
- echo "check: failed to mount \$SCRATCH_DEV using specified options"
- status=1
- exit
+ _fatal "check: failed to mount \$SCRATCH_DEV using specified options"
else
_scratch_unmount
fi
@@ -1106,12 +1092,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] 11+ messages in thread
* Re: [PATCH v3 1/2] common: Move exit related functions to a common/exit
2025-04-30 12:45 ` [PATCH v3 1/2] common: Move exit related functions to a common/exit Nirjhar Roy (IBM)
@ 2025-05-01 3:17 ` Ritesh Harjani
2025-05-01 9:10 ` Zorro Lang
0 siblings, 1 reply; 11+ messages in thread
From: Ritesh Harjani @ 2025-05-01 3:17 UTC (permalink / raw)
To: Nirjhar Roy (IBM), fstests
Cc: linux-ext4, linux-xfs, ojaswin, djwong, zlang, david, hch,
nirjhar.roy.lists
"Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
> 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].
> While moving the exit related functions, remove _die() and die_now()
> and replace die_now with _fatal(). It is of no use to keep the
> unnecessary wrappers.
>
> [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>
> ---
> check | 2 ++
> common/config | 17 -----------------
> common/exit | 39 +++++++++++++++++++++++++++++++++++++++
> common/preamble | 3 +++
> common/punch | 39 +++++++++++++++++----------------------
> common/rc | 28 ----------------------------
> 6 files changed, 61 insertions(+), 67 deletions(-)
> create mode 100644 common/exit
>
> diff --git a/check b/check
> index 9451c350..bd84f213 100755
> --- a/check
> +++ b/check
> @@ -46,6 +46,8 @@ export DIFF_LENGTH=${DIFF_LENGTH:=10}
>
> # by default don't output timestamps
> timestamp=${TIMESTAMP:=false}
> +. common/exit
> +. common/test_names
So this gets sourced at the beginning of check script here.
>
> rm -f $tmp.list $tmp.tmp $tmp.grep $here/$iam.out $tmp.report.* $tmp.arglist
>
<...>
> diff --git a/common/preamble b/common/preamble
> index ba029a34..51d03396 100644
> --- a/common/preamble
> +++ b/common/preamble
> @@ -33,6 +33,9 @@ _register_cleanup()
> # explicitly as a member of the 'all' group.
> _begin_fstest()
> {
> + . common/exit
> + . common/test_names
> +
Why do we need to source these files here again?
Isn't check script already sourcing both of this in the beginning
itself?
-ritesh
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 2/2] check: Replace exit with _fatal and _exit in check
2025-04-30 12:45 ` [PATCH v3 2/2] check: Replace exit with _fatal and _exit in check Nirjhar Roy (IBM)
@ 2025-05-01 3:31 ` Ritesh Harjani
2025-05-02 6:10 ` Nirjhar Roy (IBM)
0 siblings, 1 reply; 11+ messages in thread
From: Ritesh Harjani @ 2025-05-01 3:31 UTC (permalink / raw)
To: Nirjhar Roy (IBM), fstests
Cc: linux-ext4, linux-xfs, ojaswin, djwong, zlang, david, hch,
nirjhar.roy.lists
"Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
> Some of the "status=<val>;exit" and "exit <val>" were not
> replaced with _exit <val> and _fatal. Doing it now.
>
Indeed a nice cleanup. The changes in this patch looks good to me.
Please feel free to add:
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
So I guess these couple of series was to cleanup exit routines from
common bash scripts. Do we plan to update the tests/ as well where
we call...
status=X
exit
...or updating tests/ is not needed since we didn't find any wrong usage of
"exit X" routines there?
Either ways - I think we might need to update the README at some point
in time which carries this snip. You might need to add that there are
helper routines like _exit() and _fatal() perhaps for use in common
scripts.
<snip>
To force a non-zero exit status use:
status=1
exit
Note that:
exit 1
won't have the desired effect because of the way the exit trap
works.
-ritesh
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 1/2] common: Move exit related functions to a common/exit
2025-05-01 3:17 ` Ritesh Harjani
@ 2025-05-01 9:10 ` Zorro Lang
2025-05-02 4:23 ` Ritesh Harjani
0 siblings, 1 reply; 11+ messages in thread
From: Zorro Lang @ 2025-05-01 9:10 UTC (permalink / raw)
To: Ritesh Harjani
Cc: Nirjhar Roy (IBM), fstests, linux-ext4, linux-xfs, ojaswin,
djwong, zlang, david, hch
On Thu, May 01, 2025 at 08:47:46AM +0530, Ritesh Harjani wrote:
> "Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
>
> > 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].
> > While moving the exit related functions, remove _die() and die_now()
> > and replace die_now with _fatal(). It is of no use to keep the
> > unnecessary wrappers.
> >
> > [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>
> > ---
> > check | 2 ++
> > common/config | 17 -----------------
> > common/exit | 39 +++++++++++++++++++++++++++++++++++++++
> > common/preamble | 3 +++
> > common/punch | 39 +++++++++++++++++----------------------
> > common/rc | 28 ----------------------------
> > 6 files changed, 61 insertions(+), 67 deletions(-)
> > create mode 100644 common/exit
> >
> > diff --git a/check b/check
> > index 9451c350..bd84f213 100755
> > --- a/check
> > +++ b/check
> > @@ -46,6 +46,8 @@ export DIFF_LENGTH=${DIFF_LENGTH:=10}
> >
> > # by default don't output timestamps
> > timestamp=${TIMESTAMP:=false}
> > +. common/exit
> > +. common/test_names
>
> So this gets sourced at the beginning of check script here.
>
> >
> > rm -f $tmp.list $tmp.tmp $tmp.grep $here/$iam.out $tmp.report.* $tmp.arglist
> >
> <...>
> > diff --git a/common/preamble b/common/preamble
> > index ba029a34..51d03396 100644
> > --- a/common/preamble
> > +++ b/common/preamble
> > @@ -33,6 +33,9 @@ _register_cleanup()
> > # explicitly as a member of the 'all' group.
> > _begin_fstest()
> > {
> > + . common/exit
> > + . common/test_names
> > +
>
> Why do we need to source these files here again?
> Isn't check script already sourcing both of this in the beginning
> itself?
The _begin_fstest is called at the beginning of each test case (e.g. generic/001).
And "check" run each test cases likes:
cmd="generic/001"
./$cmd
So the imported things (by "check") can't help sub-case running
Thanks,
Zorro
>
> -ritesh
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 1/2] common: Move exit related functions to a common/exit
2025-05-01 9:10 ` Zorro Lang
@ 2025-05-02 4:23 ` Ritesh Harjani
2025-05-03 3:06 ` Ritesh Harjani
0 siblings, 1 reply; 11+ messages in thread
From: Ritesh Harjani @ 2025-05-02 4:23 UTC (permalink / raw)
To: Zorro Lang
Cc: Nirjhar Roy (IBM), fstests, linux-ext4, linux-xfs, ojaswin,
djwong, zlang, david, hch
Zorro Lang <zlang@redhat.com> writes:
> On Thu, May 01, 2025 at 08:47:46AM +0530, Ritesh Harjani wrote:
>> "Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
>>
>> > 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].
>> > While moving the exit related functions, remove _die() and die_now()
>> > and replace die_now with _fatal(). It is of no use to keep the
>> > unnecessary wrappers.
>> >
>> > [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>
>> > ---
>> > check | 2 ++
>> > common/config | 17 -----------------
>> > common/exit | 39 +++++++++++++++++++++++++++++++++++++++
>> > common/preamble | 3 +++
>> > common/punch | 39 +++++++++++++++++----------------------
>> > common/rc | 28 ----------------------------
>> > 6 files changed, 61 insertions(+), 67 deletions(-)
>> > create mode 100644 common/exit
>> >
>> > diff --git a/check b/check
>> > index 9451c350..bd84f213 100755
>> > --- a/check
>> > +++ b/check
>> > @@ -46,6 +46,8 @@ export DIFF_LENGTH=${DIFF_LENGTH:=10}
>> >
>> > # by default don't output timestamps
>> > timestamp=${TIMESTAMP:=false}
>> > +. common/exit
>> > +. common/test_names
>>
>> So this gets sourced at the beginning of check script here.
>>
>> >
>> > rm -f $tmp.list $tmp.tmp $tmp.grep $here/$iam.out $tmp.report.* $tmp.arglist
>> >
>> <...>
>> > diff --git a/common/preamble b/common/preamble
>> > index ba029a34..51d03396 100644
>> > --- a/common/preamble
>> > +++ b/common/preamble
>> > @@ -33,6 +33,9 @@ _register_cleanup()
>> > # explicitly as a member of the 'all' group.
>> > _begin_fstest()
>> > {
>> > + . common/exit
>> > + . common/test_names
>> > +
>>
>> Why do we need to source these files here again?
>> Isn't check script already sourcing both of this in the beginning
>> itself?
>
> The _begin_fstest is called at the beginning of each test case (e.g. generic/001).
> And "check" run each test cases likes:
>
> cmd="generic/001"
> ./$cmd
>
> So the imported things (by "check") can't help sub-case running
aah right. Each testcase is inoked by "exec ./$seq" and it won't have
the function definitions sourced from the previous shell process. So we
will need to source the necessary files again within the test execution.
-ritesh
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 2/2] check: Replace exit with _fatal and _exit in check
2025-05-01 3:31 ` Ritesh Harjani
@ 2025-05-02 6:10 ` Nirjhar Roy (IBM)
0 siblings, 0 replies; 11+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-05-02 6:10 UTC (permalink / raw)
To: Ritesh Harjani (IBM), fstests
Cc: linux-ext4, linux-xfs, ojaswin, djwong, zlang, david, hch
On 5/1/25 09:01, Ritesh Harjani (IBM) wrote:
> "Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
>
>> Some of the "status=<val>;exit" and "exit <val>" were not
>> replaced with _exit <val> and _fatal. Doing it now.
>>
> Indeed a nice cleanup. The changes in this patch looks good to me.
>
> Please feel free to add:
> Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
Thank you.
>
>
> So I guess these couple of series was to cleanup exit routines from
> common bash scripts. Do we plan to update the tests/ as well where
> we call...
> status=X
> exit
>
> ...or updating tests/ is not needed since we didn't find any wrong usage of
> "exit X" routines there?
Thank you for pointing this out. The exit command is used in 2 ways in
the tests:
1. "exit 1"
2. "status=0; exit"
1) works because we set the value of "status" to 1 (failure by default)
in _begin_fstest() - so even if "exit 1" is not correctly explicitly
setting the value of "status", it simply works. However, "exit <any
value != 1>" will not work (although I didn't find any place in tests
where exit has been used with any other value apart from 0 and 1).
2) This works since we are setting the value of "status" correcting
before "exit"ing.
But yes, we should ideally replace direct usage of exit with either
_exit or _fatal (depending on the exit value). I will add this to my
ToDo list and send a separate patch series with this and the README
change you have suggested below.
>
>
> Either ways - I think we might need to update the README at some point
> in time which carries this snip. You might need to add that there are
> helper routines like _exit() and _fatal() perhaps for use in common
> scripts.
>
> <snip>
> To force a non-zero exit status use:
> status=1
> exit
>
> Note that:
> exit 1
> won't have the desired effect because of the way the exit trap
> works.
I agree. I will send a separate patch with this and the exit call
replacement of the tests.
--NR
>
>
> -ritesh
--
Nirjhar Roy
Linux Kernel Developer
IBM, Bangalore
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 1/2] common: Move exit related functions to a common/exit
2025-05-02 4:23 ` Ritesh Harjani
@ 2025-05-03 3:06 ` Ritesh Harjani
0 siblings, 0 replies; 11+ messages in thread
From: Ritesh Harjani @ 2025-05-03 3:06 UTC (permalink / raw)
To: Zorro Lang
Cc: Nirjhar Roy (IBM), fstests, linux-ext4, linux-xfs, ojaswin,
djwong, zlang, david, hch
Ritesh Harjani (IBM) <ritesh.list@gmail.com> writes:
> Zorro Lang <zlang@redhat.com> writes:
>
>> On Thu, May 01, 2025 at 08:47:46AM +0530, Ritesh Harjani wrote:
>>> "Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
>>>
>>> > 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].
>>> > While moving the exit related functions, remove _die() and die_now()
>>> > and replace die_now with _fatal(). It is of no use to keep the
>>> > unnecessary wrappers.
>>> >
>>> > [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>
>>> > ---
>>> > check | 2 ++
>>> > common/config | 17 -----------------
>>> > common/exit | 39 +++++++++++++++++++++++++++++++++++++++
>>> > common/preamble | 3 +++
>>> > common/punch | 39 +++++++++++++++++----------------------
>>> > common/rc | 28 ----------------------------
>>> > 6 files changed, 61 insertions(+), 67 deletions(-)
>>> > create mode 100644 common/exit
>>> >
>>> > diff --git a/check b/check
>>> > index 9451c350..bd84f213 100755
>>> > --- a/check
>>> > +++ b/check
>>> > @@ -46,6 +46,8 @@ export DIFF_LENGTH=${DIFF_LENGTH:=10}
>>> >
>>> > # by default don't output timestamps
>>> > timestamp=${TIMESTAMP:=false}
>>> > +. common/exit
>>> > +. common/test_names
>>>
>>> So this gets sourced at the beginning of check script here.
>>>
>>> >
>>> > rm -f $tmp.list $tmp.tmp $tmp.grep $here/$iam.out $tmp.report.* $tmp.arglist
>>> >
>>> <...>
>>> > diff --git a/common/preamble b/common/preamble
>>> > index ba029a34..51d03396 100644
>>> > --- a/common/preamble
>>> > +++ b/common/preamble
>>> > @@ -33,6 +33,9 @@ _register_cleanup()
>>> > # explicitly as a member of the 'all' group.
>>> > _begin_fstest()
>>> > {
>>> > + . common/exit
>>> > + . common/test_names
>>> > +
>>>
>>> Why do we need to source these files here again?
>>> Isn't check script already sourcing both of this in the beginning
>>> itself?
>>
>> The _begin_fstest is called at the beginning of each test case (e.g. generic/001).
>> And "check" run each test cases likes:
>>
>> cmd="generic/001"
>> ./$cmd
>>
>> So the imported things (by "check") can't help sub-case running
>
> aah right. Each testcase is inoked by "exec ./$seq" and it won't have
Ok. To be accurate, it is...
bash -c "<...>; exec ./$seq"
& not just
exec ./$seq
-ritesh
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 0/2] common: Move exit related functions to common/exit
2025-04-30 12:45 [PATCH v3 0/2] common: Move exit related functions to common/exit Nirjhar Roy (IBM)
2025-04-30 12:45 ` [PATCH v3 1/2] common: Move exit related functions to a common/exit Nirjhar Roy (IBM)
2025-04-30 12:45 ` [PATCH v3 2/2] check: Replace exit with _fatal and _exit in check Nirjhar Roy (IBM)
@ 2025-05-06 8:49 ` Nirjhar Roy (IBM)
2025-05-06 15:03 ` Zorro Lang
2 siblings, 1 reply; 11+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-05-06 8:49 UTC (permalink / raw)
To: fstests
Cc: linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong, zlang, david,
hch
On 4/30/25 18:15, Nirjhar Roy (IBM) wrote:
> 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].
>
> [v2] -> v3
> Addressed Dave's feedbacks.
> In patch [1/2]
> - Removed _die() and die_now() from common/exit
> - Replaced die_now() with _fatal in common/punch
> - Removed sourcing of common/exit and common/test_names from common/config
> and moved them to the beginning of check.
> - Added sourcing of common/test_names in _begin_fstest() since common/config
> is no more sourcing common/test_names.
> - Added a blank line in _begin_fstest() after sourcing common/{exit,test_names}
> In patch [2/2]
> - Replaced "_exit 1" with _fatal and "echo <error message>; _exit 1" with
> _fatal <error message>.
> - Reverted to "exit \$status" in the trap handler registration in check - just
> to make it more obvious to the reader that we are capturing $status as the
> final exit value.
Hi Dave and Zorro,
Any further feedback in this version?
--NR
>
> [v1] https://lore.kernel.org/all/cover.1745390030.git.nirjhar.roy.lists@gmail.com/
> [v2] https://lore.kernel.org/all/cover.1745908976.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 _fatal and _exit in check
>
> check | 54 ++++++++++++++++++-------------------------------
> common/config | 17 ----------------
> common/exit | 39 +++++++++++++++++++++++++++++++++++
> common/preamble | 3 +++
> common/punch | 39 ++++++++++++++++-------------------
> common/rc | 28 -------------------------
> 6 files changed, 79 insertions(+), 101 deletions(-)
> create mode 100644 common/exit
>
> --
> 2.34.1
>
--
Nirjhar Roy
Linux Kernel Developer
IBM, Bangalore
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 0/2] common: Move exit related functions to common/exit
2025-05-06 8:49 ` [PATCH v3 0/2] common: Move exit related functions to common/exit Nirjhar Roy (IBM)
@ 2025-05-06 15:03 ` Zorro Lang
0 siblings, 0 replies; 11+ messages in thread
From: Zorro Lang @ 2025-05-06 15:03 UTC (permalink / raw)
To: Nirjhar Roy (IBM)
Cc: fstests, linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong,
zlang, david, hch
On Tue, May 06, 2025 at 02:19:07PM +0530, Nirjhar Roy (IBM) wrote:
>
> On 4/30/25 18:15, Nirjhar Roy (IBM) wrote:
> > 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].
> >
> > [v2] -> v3
> > Addressed Dave's feedbacks.
> > In patch [1/2]
> > - Removed _die() and die_now() from common/exit
> > - Replaced die_now() with _fatal in common/punch
> > - Removed sourcing of common/exit and common/test_names from common/config
> > and moved them to the beginning of check.
> > - Added sourcing of common/test_names in _begin_fstest() since common/config
> > is no more sourcing common/test_names.
> > - Added a blank line in _begin_fstest() after sourcing common/{exit,test_names}
> > In patch [2/2]
> > - Replaced "_exit 1" with _fatal and "echo <error message>; _exit 1" with
> > _fatal <error message>.
> > - Reverted to "exit \$status" in the trap handler registration in check - just
> > to make it more obvious to the reader that we are capturing $status as the
> > final exit value.
>
> Hi Dave and Zorro,
>
> Any further feedback in this version?
This version is good to me, if there's not more review points from others, I'll merge it.
Reviewed-by: Zorro Lang <zlang@redhat.com>
>
> --NR
>
> >
> > [v1] https://lore.kernel.org/all/cover.1745390030.git.nirjhar.roy.lists@gmail.com/
> > [v2] https://lore.kernel.org/all/cover.1745908976.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 _fatal and _exit in check
> >
> > check | 54 ++++++++++++++++++-------------------------------
> > common/config | 17 ----------------
> > common/exit | 39 +++++++++++++++++++++++++++++++++++
> > common/preamble | 3 +++
> > common/punch | 39 ++++++++++++++++-------------------
> > common/rc | 28 -------------------------
> > 6 files changed, 79 insertions(+), 101 deletions(-)
> > create mode 100644 common/exit
> >
> > --
> > 2.34.1
> >
> --
> Nirjhar Roy
> Linux Kernel Developer
> IBM, Bangalore
>
>
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2025-05-06 15:03 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-30 12:45 [PATCH v3 0/2] common: Move exit related functions to common/exit Nirjhar Roy (IBM)
2025-04-30 12:45 ` [PATCH v3 1/2] common: Move exit related functions to a common/exit Nirjhar Roy (IBM)
2025-05-01 3:17 ` Ritesh Harjani
2025-05-01 9:10 ` Zorro Lang
2025-05-02 4:23 ` Ritesh Harjani
2025-05-03 3:06 ` Ritesh Harjani
2025-04-30 12:45 ` [PATCH v3 2/2] check: Replace exit with _fatal and _exit in check Nirjhar Roy (IBM)
2025-05-01 3:31 ` Ritesh Harjani
2025-05-02 6:10 ` Nirjhar Roy (IBM)
2025-05-06 8:49 ` [PATCH v3 0/2] common: Move exit related functions to common/exit Nirjhar Roy (IBM)
2025-05-06 15:03 ` Zorro Lang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox