* [PATCH v2 0/5] Minor cleanups in common/
@ 2025-04-01 6:43 Nirjhar Roy (IBM)
2025-04-01 6:43 ` [PATCH v2 1/5] generic/749: Remove redundant sourcing of common/rc Nirjhar Roy (IBM)
` (5 more replies)
0 siblings, 6 replies; 26+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-01 6:43 UTC (permalink / raw)
To: fstests
Cc: linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong, zlang, david,
nirjhar.roy.lists
This patch series removes some unnecessary sourcing of common/rc
and decouples the call to init_rc() from the sourcing of common/rc.
This is proposed in [1] and [2]. It also removes direct usage of exit command
with a _exit wrapper. The individual patches have the details.
[v1] --> v[2]
1. Added R.B from Darrick in patch 1 of [v1]
2. Kept the init_rc call that was deleted in the v1.
3. Introduced _exit wrapper around exit command. This will help us get correct
exit codes ("$?") on failures.
[1] https://lore.kernel.org/all/20250206155251.GA21787@frogsfrogsfrogs/
[2] https://lore.kernel.org/all/20250210142322.tptpphdntglsz4eq@dell-per750-06-vm-08.rhts.eng.pek2.redhat.com/
[v1] https://lore.kernel.org/all/cover.1741248214.git.nirjhar.roy.lists@gmail.com/
Nirjhar Roy (IBM) (5):
generic/749: Remove redundant sourcing of common/rc
check: Remove redundant _test_mount in check
check,common{rc,preamble}: Decouple init_rc() call from sourcing
common/rc
common/config: Introduce _exit wrapper around exit command
common: exit --> _exit
check | 8 +---
common/btrfs | 6 +--
common/ceph | 2 +-
common/config | 15 +++++--
common/ext4 | 2 +-
common/populate | 2 +-
common/preamble | 3 +-
common/punch | 12 +++---
common/rc | 105 ++++++++++++++++++++++------------------------
common/xfs | 8 ++--
tests/generic/749 | 1 -
11 files changed, 81 insertions(+), 83 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 26+ messages in thread
* [PATCH v2 1/5] generic/749: Remove redundant sourcing of common/rc
2025-04-01 6:43 [PATCH v2 0/5] Minor cleanups in common/ Nirjhar Roy (IBM)
@ 2025-04-01 6:43 ` Nirjhar Roy (IBM)
2025-04-04 3:31 ` Ritesh Harjani
2025-04-01 6:43 ` [PATCH v2 2/5] check: Remove redundant _test_mount in check Nirjhar Roy (IBM)
` (4 subsequent siblings)
5 siblings, 1 reply; 26+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-01 6:43 UTC (permalink / raw)
To: fstests
Cc: linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong, zlang, david,
nirjhar.roy.lists
common/rc is already sourced before the test starts running
in _begin_fstest() preamble.
Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
---
tests/generic/749 | 1 -
1 file changed, 1 deletion(-)
diff --git a/tests/generic/749 b/tests/generic/749
index fc747738..451f283e 100755
--- a/tests/generic/749
+++ b/tests/generic/749
@@ -15,7 +15,6 @@
# boundary and ensures we get a SIGBUS if we write to data beyond the system
# page size even if the block size is greater than the system page size.
. ./common/preamble
-. ./common/rc
_begin_fstest auto quick prealloc
# Import common functions.
--
2.34.1
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH v2 2/5] check: Remove redundant _test_mount in check
2025-04-01 6:43 [PATCH v2 0/5] Minor cleanups in common/ Nirjhar Roy (IBM)
2025-04-01 6:43 ` [PATCH v2 1/5] generic/749: Remove redundant sourcing of common/rc Nirjhar Roy (IBM)
@ 2025-04-01 6:43 ` Nirjhar Roy (IBM)
2025-04-04 3:36 ` Ritesh Harjani
2025-04-01 6:43 ` [PATCH v2 3/5] check,common{rc,preamble}: Decouple init_rc() call from sourcing common/rc Nirjhar Roy (IBM)
` (3 subsequent siblings)
5 siblings, 1 reply; 26+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-01 6:43 UTC (permalink / raw)
To: fstests
Cc: linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong, zlang, david,
nirjhar.roy.lists
init_rc already does a _test_mount. Hence removing the additional
_test_mount call when OLD_TEST_FS_MOUNT_OPTS != TEST_FS_MOUNT_OPTS.
Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
---
check | 6 ------
1 file changed, 6 deletions(-)
diff --git a/check b/check
index 32890470..16bf1586 100755
--- a/check
+++ b/check
@@ -792,12 +792,6 @@ function run_section()
_prepare_test_list
elif [ "$OLD_TEST_FS_MOUNT_OPTS" != "$TEST_FS_MOUNT_OPTS" ]; then
_test_unmount 2> /dev/null
- if ! _test_mount
- then
- echo "check: failed to mount $TEST_DEV on $TEST_DIR"
- status=1
- exit
- fi
fi
init_rc
--
2.34.1
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH v2 3/5] check,common{rc,preamble}: Decouple init_rc() call from sourcing common/rc
2025-04-01 6:43 [PATCH v2 0/5] Minor cleanups in common/ Nirjhar Roy (IBM)
2025-04-01 6:43 ` [PATCH v2 1/5] generic/749: Remove redundant sourcing of common/rc Nirjhar Roy (IBM)
2025-04-01 6:43 ` [PATCH v2 2/5] check: Remove redundant _test_mount in check Nirjhar Roy (IBM)
@ 2025-04-01 6:43 ` Nirjhar Roy (IBM)
2025-04-04 4:00 ` Ritesh Harjani
2025-04-01 6:43 ` [PATCH v2 4/5] common/config: Introduce _exit wrapper around exit command Nirjhar Roy (IBM)
` (2 subsequent siblings)
5 siblings, 1 reply; 26+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-01 6:43 UTC (permalink / raw)
To: fstests
Cc: linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong, zlang, david,
nirjhar.roy.lists
Silently executing scripts during sourcing common/rc isn't good practice
and also causes unnecessary script execution. Decouple init_rc() call
and call init_rc() explicitly where required.
Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
---
check | 2 ++
common/preamble | 1 +
common/rc | 2 --
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/check b/check
index 16bf1586..2d2c82ac 100755
--- a/check
+++ b/check
@@ -364,6 +364,8 @@ if ! . ./common/rc; then
exit 1
fi
+init_rc
+
# If the test config specified a soak test duration, see if there are any
# unit suffixes that need converting to an integer seconds count.
if [ -n "$SOAK_DURATION" ]; then
diff --git a/common/preamble b/common/preamble
index 0c9ee2e0..c92e55bb 100644
--- a/common/preamble
+++ b/common/preamble
@@ -50,6 +50,7 @@ _begin_fstest()
_register_cleanup _cleanup
. ./common/rc
+ init_rc
# remove previous $seqres.full before test
rm -f $seqres.full $seqres.hints
diff --git a/common/rc b/common/rc
index 16d627e1..038c22f6 100644
--- a/common/rc
+++ b/common/rc
@@ -5817,8 +5817,6 @@ _require_program() {
_have_program "$1" || _notrun "$tag required"
}
-init_rc
-
################################################################################
# make sure this script returns success
/bin/true
--
2.34.1
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH v2 4/5] common/config: Introduce _exit wrapper around exit command
2025-04-01 6:43 [PATCH v2 0/5] Minor cleanups in common/ Nirjhar Roy (IBM)
` (2 preceding siblings ...)
2025-04-01 6:43 ` [PATCH v2 3/5] check,common{rc,preamble}: Decouple init_rc() call from sourcing common/rc Nirjhar Roy (IBM)
@ 2025-04-01 6:43 ` Nirjhar Roy (IBM)
2025-04-04 5:03 ` Ritesh Harjani
2025-04-01 6:44 ` [PATCH v2 5/5] common: exit --> _exit Nirjhar Roy (IBM)
2025-04-01 21:37 ` [PATCH v2 0/5] Minor cleanups in common/ Dave Chinner
5 siblings, 1 reply; 26+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-01 6:43 UTC (permalink / raw)
To: fstests
Cc: linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong, zlang, david,
nirjhar.roy.lists
We should always set the value of status correctly when we are exiting.
Else, "$?" might not give us the correct value.
If we see the following trap
handler registration in the check script:
if $OPTIONS_HAVE_SECTIONS; then
trap "_kill_seq; _summary; exit \$status" 0 1 2 3 15
else
trap "_kill_seq; _wrapup; exit \$status" 0 1 2 3 15
fi
So, "exit 1" will exit the check script without setting the correct
return value. I ran with the following local.config file:
[xfs_4k_valid]
FSTYP=xfs
TEST_DEV=/dev/loop0
TEST_DIR=/mnt1/test
SCRATCH_DEV=/dev/loop1
SCRATCH_MNT=/mnt1/scratch
[xfs_4k_invalid]
FSTYP=xfs
TEST_DEV=/dev/loop0
TEST_DIR=/mnt1/invalid_dir
SCRATCH_DEV=/dev/loop1
SCRATCH_MNT=/mnt1/scratch
This caused the init_rc() to catch the case of invalid _test_mount
options. Although the check script correctly failed during the execution
of the "xfs_4k_invalid" section, the return value was 0, i.e "echo $?"
returned 0. This is because init_rc exits with "exit 1" without
correctly setting the value of "status". IMO, the correct behavior
should have been that "$?" should have been non-zero.
The next patch will replace exit with _exit.
Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
---
common/config | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/common/config b/common/config
index 79bec87f..eb6af35a 100644
--- a/common/config
+++ b/common/config
@@ -96,6 +96,14 @@ 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.
+_exit()
+{
+ status="$1"
+ exit "$status"
+}
+
# Handle mkfs.$fstyp which does (or does not) require -f to overwrite
set_mkfs_prog_path_with_opts()
{
--
2.34.1
^ permalink raw reply related [flat|nested] 26+ messages in thread
* [PATCH v2 5/5] common: exit --> _exit
2025-04-01 6:43 [PATCH v2 0/5] Minor cleanups in common/ Nirjhar Roy (IBM)
` (3 preceding siblings ...)
2025-04-01 6:43 ` [PATCH v2 4/5] common/config: Introduce _exit wrapper around exit command Nirjhar Roy (IBM)
@ 2025-04-01 6:44 ` Nirjhar Roy (IBM)
2025-04-04 5:04 ` Ritesh Harjani
2025-04-01 21:37 ` [PATCH v2 0/5] Minor cleanups in common/ Dave Chinner
5 siblings, 1 reply; 26+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-01 6:44 UTC (permalink / raw)
To: fstests
Cc: linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong, zlang, david,
nirjhar.roy.lists
Replace exit <return-val> with _exit <return-val> which
is introduced in the previous patch.
Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
---
common/btrfs | 6 +--
common/ceph | 2 +-
common/config | 7 ++--
common/ext4 | 2 +-
common/populate | 2 +-
common/preamble | 2 +-
common/punch | 12 +++---
common/rc | 103 +++++++++++++++++++++++-------------------------
common/xfs | 8 ++--
9 files changed, 70 insertions(+), 74 deletions(-)
diff --git a/common/btrfs b/common/btrfs
index a3b9c12f..3725632c 100644
--- a/common/btrfs
+++ b/common/btrfs
@@ -80,7 +80,7 @@ _require_btrfs_mkfs_feature()
{
if [ -z $1 ]; then
echo "Missing feature name argument for _require_btrfs_mkfs_feature"
- exit 1
+ _exit 1
fi
feat=$1
$MKFS_BTRFS_PROG -O list-all 2>&1 | \
@@ -104,7 +104,7 @@ _require_btrfs_fs_feature()
{
if [ -z $1 ]; then
echo "Missing feature name argument for _require_btrfs_fs_feature"
- exit 1
+ _exit 1
fi
feat=$1
modprobe btrfs > /dev/null 2>&1
@@ -214,7 +214,7 @@ _check_btrfs_filesystem()
if [ $ok -eq 0 ]; then
status=1
if [ "$iam" != "check" ]; then
- exit 1
+ _exit 1
fi
return 1
fi
diff --git a/common/ceph b/common/ceph
index d6f24df1..df7a6814 100644
--- a/common/ceph
+++ b/common/ceph
@@ -14,7 +14,7 @@ _ceph_create_file_layout()
if [ -e $fname ]; then
echo "File $fname already exists."
- exit 1
+ _exit 1
fi
touch $fname
$SETFATTR_PROG -n ceph.file.layout \
diff --git a/common/config b/common/config
index eb6af35a..4c5435b7 100644
--- a/common/config
+++ b/common/config
@@ -123,8 +123,7 @@ set_mkfs_prog_path_with_opts()
_fatal()
{
echo "$*"
- status=1
- exit 1
+ _exit 1
}
export MKFS_PROG="$(type -P mkfs)"
@@ -868,7 +867,7 @@ get_next_config() {
echo "Warning: need to define parameters for host $HOST"
echo " or set variables:"
echo " $MC"
- exit 1
+ _exit 1
fi
_check_device TEST_DEV required $TEST_DEV
@@ -879,7 +878,7 @@ get_next_config() {
if [ ! -z "$SCRATCH_DEV_POOL" ]; then
if [ ! -z "$SCRATCH_DEV" ]; then
echo "common/config: Error: \$SCRATCH_DEV ($SCRATCH_DEV) should be unset when \$SCRATCH_DEV_POOL ($SCRATCH_DEV_POOL) is set"
- exit 1
+ _exit 1
fi
SCRATCH_DEV=`echo $SCRATCH_DEV_POOL | awk '{print $1}'`
export SCRATCH_DEV
diff --git a/common/ext4 b/common/ext4
index e1b336d3..f88fa532 100644
--- a/common/ext4
+++ b/common/ext4
@@ -182,7 +182,7 @@ _require_scratch_ext4_feature()
{
if [ -z "$1" ]; then
echo "Usage: _require_scratch_ext4_feature feature"
- exit 1
+ _exit 1
fi
$MKFS_EXT4_PROG -F $MKFS_OPTIONS -O "$1" \
$SCRATCH_DEV 512m >/dev/null 2>&1 \
diff --git a/common/populate b/common/populate
index 7352f598..50dc75d3 100644
--- a/common/populate
+++ b/common/populate
@@ -1003,7 +1003,7 @@ _fill_fs()
if [ $# -ne 4 ]; then
echo "Usage: _fill_fs filesize dir blocksize switch_user"
- exit 1
+ _exit 1
fi
if [ $switch_user -eq 0 ]; then
diff --git a/common/preamble b/common/preamble
index c92e55bb..ba029a34 100644
--- a/common/preamble
+++ b/common/preamble
@@ -35,7 +35,7 @@ _begin_fstest()
{
if [ -n "$seq" ]; then
echo "_begin_fstest can only be called once!"
- exit 1
+ _exit 1
fi
seq=`basename $0`
diff --git a/common/punch b/common/punch
index 43ccab69..6567b9d1 100644
--- a/common/punch
+++ b/common/punch
@@ -172,16 +172,16 @@ _filter_fiemap_flags()
$AWK_PROG -e "$awk_script" | _coalesce_extents
}
-# Filters fiemap output to only print the
+# Filters fiemap output to only print the
# file offset column and whether or not
# it is an extent or a hole
_filter_hole_fiemap()
{
$AWK_PROG '
$3 ~ /hole/ {
- print $1, $2, $3;
+ print $1, $2, $3;
next;
- }
+ }
$5 ~ /0x[[:xdigit:]]+/ {
print $1, $2, "extent";
}' |
@@ -225,7 +225,7 @@ _filter_bmap()
die_now()
{
status=1
- exit
+ _exit
}
# test the different corner cases for zeroing a range:
@@ -276,7 +276,7 @@ _test_generic_punch()
u) unwritten_tests=
;;
?) echo Invalid flag
- exit 1
+ _exit 1
;;
esac
done
@@ -552,7 +552,7 @@ _test_block_boundaries()
d) sync_cmd=
;;
?) echo Invalid flag
- exit 1
+ _exit 1
;;
esac
done
diff --git a/common/rc b/common/rc
index 038c22f6..02dddc91 100644
--- a/common/rc
+++ b/common/rc
@@ -909,8 +909,7 @@ _mkfs_dev()
# output stored mkfs output
cat $tmp.mkfserr >&2
cat $tmp.mkfsstd
- status=1
- exit 1
+ _exit 1
fi
rm -f $tmp.mkfserr $tmp.mkfsstd
}
@@ -1575,7 +1574,7 @@ _get_pids_by_name()
if [ $# -ne 1 ]
then
echo "Usage: _get_pids_by_name process-name" 1>&2
- exit 1
+ _exit 1
fi
# Algorithm ... all ps(1) variants have a time of the form MM:SS or
@@ -1609,7 +1608,7 @@ _df_device()
if [ $# -ne 1 ]
then
echo "Usage: _df_device device" 1>&2
- exit 1
+ _exit 1
fi
# Note that we use "==" here so awk doesn't try to interpret an NFS over
@@ -1641,7 +1640,7 @@ _df_dir()
if [ $# -ne 1 ]
then
echo "Usage: _df_dir device" 1>&2
- exit 1
+ _exit 1
fi
$DF_PROG $1 2>/dev/null | $AWK_PROG -v what=$1 '
@@ -1667,7 +1666,7 @@ _used()
if [ $# -ne 1 ]
then
echo "Usage: _used device" 1>&2
- exit 1
+ _exit 1
fi
_df_device $1 | $AWK_PROG '{ sub("%", "") ; print $6 }'
@@ -1680,7 +1679,7 @@ _fs_type()
if [ $# -ne 1 ]
then
echo "Usage: _fs_type device" 1>&2
- exit 1
+ _exit 1
fi
#
@@ -1705,7 +1704,7 @@ _fs_options()
if [ $# -ne 1 ]
then
echo "Usage: _fs_options device" 1>&2
- exit 1
+ _exit 1
fi
$AWK_PROG -v dev=$1 '
@@ -1720,7 +1719,7 @@ _is_block_dev()
if [ $# -ne 1 ]
then
echo "Usage: _is_block_dev dev" 1>&2
- exit 1
+ _exit 1
fi
local dev=$1
@@ -1739,7 +1738,7 @@ _is_char_dev()
{
if [ $# -ne 1 ]; then
echo "Usage: _is_char_dev dev" 1>&2
- exit 1
+ _exit 1
fi
local dev=$1
@@ -1772,7 +1771,7 @@ _do()
echo -n "$note... "
else
echo "Usage: _do [note] cmd" 1>&2
- status=1; exit
+ _exit 1
fi
(eval "echo '---' \"$cmd\"") >>$seqres.full
@@ -1793,7 +1792,7 @@ _do()
then
[ $# -ne 2 ] && echo
eval "echo \"$cmd\" failed \(returned $ret\): see $seqres.full"
- status=1; exit
+ _exit 1
fi
return $ret
@@ -1809,8 +1808,7 @@ _notrun()
rm -f ${RESULT_DIR}/require_test*
rm -f ${RESULT_DIR}/require_scratch*
- status=0
- exit
+ _exit 0
}
# just plain bail out
@@ -1819,8 +1817,7 @@ _fail()
{
echo "$*" | tee -a $seqres.full
echo "(see $seqres.full for details)"
- status=1
- exit 1
+ _exit 1
}
#
@@ -2049,14 +2046,14 @@ _require_scratch_nocheck()
_check_mounted_on SCRATCH_DEV $SCRATCH_DEV SCRATCH_MNT $SCRATCH_MNT
local err=$?
- [ $err -le 1 ] || exit 1
+ [ $err -le 1 ] || _exit 1
if [ $err -eq 0 ]
then
# if it's mounted, unmount it
if ! _scratch_unmount
then
echo "failed to unmount $SCRATCH_DEV"
- exit 1
+ _exit 1
fi
fi
rm -f ${RESULT_DIR}/require_scratch "$RESULT_DIR/.skip_orebuild" "$RESULT_DIR/.skip_rebuild"
@@ -2273,13 +2270,13 @@ _require_test()
_check_mounted_on TEST_DEV $TEST_DEV TEST_DIR $TEST_DIR
local err=$?
- [ $err -le 1 ] || exit 1
+ [ $err -le 1 ] || _exit 1
if [ $err -ne 0 ]
then
if ! _test_mount
then
echo "!!! failed to mount $TEST_DEV on $TEST_DIR"
- exit 1
+ _exit 1
fi
fi
touch ${RESULT_DIR}/require_test
@@ -2391,7 +2388,7 @@ _require_block_device()
{
if [ -z "$1" ]; then
echo "Usage: _require_block_device <dev>" 1>&2
- exit 1
+ _exit 1
fi
if [ "`_is_block_dev "$1"`" == "" ]; then
_notrun "require $1 to be valid block disk"
@@ -2404,7 +2401,7 @@ _require_local_device()
{
if [ -z "$1" ]; then
echo "Usage: _require_local_device <dev>" 1>&2
- exit 1
+ _exit 1
fi
if [ "`_is_block_dev "$1"`" != "" ]; then
return 0
@@ -2512,7 +2509,7 @@ _zone_type()
local target=$1
if [ -z $target ]; then
echo "Usage: _zone_type <device>"
- exit 1
+ _exit 1
fi
local sdev=`_short_dev $target`
@@ -2528,7 +2525,7 @@ _require_zoned_device()
local target=$1
if [ -z $target ]; then
echo "Usage: _require_zoned_device <device>"
- exit 1
+ _exit 1
fi
local type=`_zone_type ${target}`
@@ -2668,7 +2665,7 @@ _run_aiodio()
if [ -z "$1" ]
then
echo "usage: _run_aiodio command_name" 2>&1
- status=1; exit 1
+ _exit 1
fi
_require_aiodio $1
@@ -2880,7 +2877,7 @@ _require_xfs_io_command()
if [ -z "$1" ]
then
echo "Usage: _require_xfs_io_command command [switch]" 1>&2
- exit 1
+ _exit 1
fi
local command=$1
shift
@@ -3364,7 +3361,7 @@ _is_dev_mounted()
if [ $# -lt 1 ]; then
echo "Usage: _is_dev_mounted <device> [fstype]" 1>&2
- exit 1
+ _exit 1
fi
findmnt -rncv -S $dev -t $fstype -o TARGET | head -1
@@ -3378,7 +3375,7 @@ _is_dir_mountpoint()
if [ $# -lt 1 ]; then
echo "Uasge: _is_dir_mountpoint <dir> [fstype]" 1>&2
- exit 1
+ _exit 1
fi
findmnt -rncv -t $fstype -o TARGET $dir | head -1
@@ -3391,7 +3388,7 @@ _remount()
if [ $# -ne 2 ]
then
echo "Usage: _remount device ro/rw" 1>&2
- exit 1
+ _exit 1
fi
local device=$1
local mode=$2
@@ -3399,7 +3396,7 @@ _remount()
if ! mount -o remount,$mode $device
then
echo "_remount: failed to remount filesystem on $device as $mode"
- exit 1
+ _exit 1
fi
}
@@ -3417,7 +3414,7 @@ _umount_or_remount_ro()
if [ $# -ne 1 ]
then
echo "Usage: _umount_or_remount_ro <device>" 1>&2
- exit 1
+ _exit 1
fi
local device=$1
@@ -3435,7 +3432,7 @@ _mount_or_remount_rw()
{
if [ $# -ne 3 ]; then
echo "Usage: _mount_or_remount_rw <opts> <dev> <mnt>" 1>&2
- exit 1
+ _exit 1
fi
local mount_opts=$1
local device=$2
@@ -3516,7 +3513,7 @@ _check_generic_filesystem()
if [ $ok -eq 0 ]; then
status=1
if [ "$iam" != "check" ]; then
- exit 1
+ _exit 1
fi
return 1
fi
@@ -3582,7 +3579,7 @@ _check_udf_filesystem()
if [ $# -ne 1 -a $# -ne 2 ]
then
echo "Usage: _check_udf_filesystem device [last_block]" 1>&2
- exit 1
+ _exit 1
fi
if [ ! -x $here/src/udf_test ]
@@ -3776,7 +3773,7 @@ _get_os_name()
echo 'linux'
else
echo Unknown operating system: `uname`
- exit
+ _exit
fi
}
@@ -3837,7 +3834,7 @@ _link_out_file()
_die()
{
echo $@
- exit 1
+ _exit 1
}
# convert urandom incompressible data to compressible text data
@@ -3994,7 +3991,7 @@ _require_scratch_dev_pool()
if _mount | grep -q $i; then
if ! _unmount $i; then
echo "failed to unmount $i - aborting"
- exit 1
+ _exit 1
fi
fi
# To help better debug when something fails, we remove
@@ -4403,7 +4400,7 @@ _require_batched_discard()
{
if [ $# -ne 1 ]; then
echo "Usage: _require_batched_discard mnt_point" 1>&2
- exit 1
+ _exit 1
fi
_require_fstrim
@@ -4630,7 +4627,7 @@ _require_chattr()
{
if [ -z "$1" ]; then
echo "Usage: _require_chattr <attr>"
- exit 1
+ _exit 1
fi
local attribute=$1
@@ -4649,7 +4646,7 @@ _get_total_inode()
{
if [ -z "$1" ]; then
echo "Usage: _get_total_inode <mnt>"
- exit 1
+ _exit 1
fi
local nr_inode;
nr_inode=`$DF_PROG -i $1 | tail -1 | awk '{print $3}'`
@@ -4660,7 +4657,7 @@ _get_used_inode()
{
if [ -z "$1" ]; then
echo "Usage: _get_used_inode <mnt>"
- exit 1
+ _exit 1
fi
local nr_inode;
nr_inode=`$DF_PROG -i $1 | tail -1 | awk '{print $4}'`
@@ -4671,7 +4668,7 @@ _get_used_inode_percent()
{
if [ -z "$1" ]; then
echo "Usage: _get_used_inode_percent <mnt>"
- exit 1
+ _exit 1
fi
local pct_inode;
pct_inode=`$DF_PROG -i $1 | tail -1 | awk '{ print $6 }' | \
@@ -4683,7 +4680,7 @@ _get_free_inode()
{
if [ -z "$1" ]; then
echo "Usage: _get_free_inode <mnt>"
- exit 1
+ _exit 1
fi
local nr_inode;
nr_inode=`$DF_PROG -i $1 | tail -1 | awk '{print $5}'`
@@ -4696,7 +4693,7 @@ _get_available_space()
{
if [ -z "$1" ]; then
echo "Usage: _get_available_space <mnt>"
- exit 1
+ _exit 1
fi
$DF_PROG -B 1 $1 | tail -n1 | awk '{ print $5 }'
}
@@ -4707,7 +4704,7 @@ _get_total_space()
{
if [ -z "$1" ]; then
echo "Usage: _get_total_space <mnt>"
- exit 1
+ _exit 1
fi
$DF_PROG -B 1 $1 | tail -n1 | awk '{ print $3 }'
}
@@ -4952,7 +4949,7 @@ init_rc()
if [ "$TEST_DEV" = "" ]
then
echo "common/rc: Error: \$TEST_DEV is not set"
- exit 1
+ _exit 1
fi
# if $TEST_DEV is not mounted, mount it now as XFS
@@ -4966,7 +4963,7 @@ init_rc()
if ! _test_mount
then
echo "common/rc: could not mount $TEST_DEV on $TEST_DIR"
- exit 1
+ _exit 1
fi
fi
fi
@@ -4979,7 +4976,7 @@ init_rc()
# mount point, because it is about to be unmounted and formatted.
# Another fs type for scratch is fine (bye bye old fs type).
_check_mounted_on SCRATCH_DEV $SCRATCH_DEV SCRATCH_MNT $SCRATCH_MNT
- [ $? -le 1 ] || exit 1
+ [ $? -le 1 ] || _exit 1
fi
# Figure out if we need to add -F ("foreign", deprecated) option to xfs_io
@@ -5029,7 +5026,7 @@ _get_file_block_size()
{
if [ -z $1 ] || [ ! -d $1 ]; then
echo "Missing mount point argument for _get_file_block_size"
- exit 1
+ _exit 1
fi
case "$FSTYP" in
@@ -5076,7 +5073,7 @@ _get_block_size()
{
if [ -z $1 ] || [ ! -d $1 ]; then
echo "Missing mount point argument for _get_block_size"
- exit 1
+ _exit 1
fi
stat -f -c %S $1
}
@@ -5146,14 +5143,14 @@ _run_hugepage_fsx() {
fi
cat $tmp.hugepage_fsx
rm -f $tmp.hugepage_fsx
- test $res -ne 0 && exit 1
+ test $res -ne 0 && _exit 1
return 0
}
# run fsx or exit the test
run_fsx()
{
- _run_fsx "$@" || exit 1
+ _run_fsx "$@" || _exit 1
}
_require_statx()
@@ -5318,7 +5315,7 @@ _get_max_file_size()
{
if [ -z $1 ] || [ ! -d $1 ]; then
echo "Missing mount point argument for _get_max_file_size"
- exit 1
+ _exit 1
fi
local mnt=$1
diff --git a/common/xfs b/common/xfs
index 81d568d3..96c15f3c 100644
--- a/common/xfs
+++ b/common/xfs
@@ -553,7 +553,7 @@ _require_xfs_db_command()
{
if [ $# -ne 1 ]; then
echo "Usage: _require_xfs_db_command command" 1>&2
- exit 1
+ _exit 1
fi
command=$1
@@ -789,7 +789,7 @@ _check_xfs_filesystem()
if [ $# -ne 3 ]; then
echo "Usage: _check_xfs_filesystem device <logdev>|none <rtdev>|none" 1>&2
- exit 1
+ _exit 1
fi
extra_mount_options=""
@@ -1014,7 +1014,7 @@ _check_xfs_filesystem()
if [ $ok -eq 0 ]; then
status=1
if [ "$iam" != "check" ]; then
- exit 1
+ _exit 1
fi
return 1
fi
@@ -1379,7 +1379,7 @@ _require_xfs_spaceman_command()
{
if [ -z "$1" ]; then
echo "Usage: _require_xfs_spaceman_command command [switch]" 1>&2
- exit 1
+ _exit 1
fi
local command=$1
shift
--
2.34.1
^ permalink raw reply related [flat|nested] 26+ messages in thread
* Re: [PATCH v2 0/5] Minor cleanups in common/
2025-04-01 6:43 [PATCH v2 0/5] Minor cleanups in common/ Nirjhar Roy (IBM)
` (4 preceding siblings ...)
2025-04-01 6:44 ` [PATCH v2 5/5] common: exit --> _exit Nirjhar Roy (IBM)
@ 2025-04-01 21:37 ` Dave Chinner
2025-04-04 14:31 ` Nirjhar Roy (IBM)
5 siblings, 1 reply; 26+ messages in thread
From: Dave Chinner @ 2025-04-01 21:37 UTC (permalink / raw)
To: Nirjhar Roy (IBM)
Cc: fstests, linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong,
zlang
On Tue, Apr 01, 2025 at 06:43:55AM +0000, Nirjhar Roy (IBM) wrote:
> This patch series removes some unnecessary sourcing of common/rc
> and decouples the call to init_rc() from the sourcing of common/rc.
> This is proposed in [1] and [2]. It also removes direct usage of exit command
> with a _exit wrapper. The individual patches have the details.
>
> [v1] --> v[2]
> 1. Added R.B from Darrick in patch 1 of [v1]
> 2. Kept the init_rc call that was deleted in the v1.
> 3. Introduced _exit wrapper around exit command. This will help us get correct
> exit codes ("$?") on failures.
>
> [1] https://lore.kernel.org/all/20250206155251.GA21787@frogsfrogsfrogs/
>
> [2] https://lore.kernel.org/all/20250210142322.tptpphdntglsz4eq@dell-per750-06-vm-08.rhts.eng.pek2.redhat.com/
>
> [v1] https://lore.kernel.org/all/cover.1741248214.git.nirjhar.roy.lists@gmail.com/
>
> Nirjhar Roy (IBM) (5):
> generic/749: Remove redundant sourcing of common/rc
> check: Remove redundant _test_mount in check
> check,common{rc,preamble}: Decouple init_rc() call from sourcing
> common/rc
> common/config: Introduce _exit wrapper around exit command
> common: exit --> _exit
Whole series looks fine to me. I've got similar patches in my
current check-parallel stack, as well as changing common/config to
match the "don't run setup code when sourcing the file" behaviour.
Reviewed-by: Dave Chinner <dchinner@redhat.com>
--
Dave Chinner
david@fromorbit.com
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 1/5] generic/749: Remove redundant sourcing of common/rc
2025-04-01 6:43 ` [PATCH v2 1/5] generic/749: Remove redundant sourcing of common/rc Nirjhar Roy (IBM)
@ 2025-04-04 3:31 ` Ritesh Harjani
0 siblings, 0 replies; 26+ messages in thread
From: Ritesh Harjani @ 2025-04-04 3:31 UTC (permalink / raw)
To: Nirjhar Roy (IBM), fstests
Cc: linux-ext4, linux-xfs, ojaswin, djwong, zlang, david,
nirjhar.roy.lists
"Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
> common/rc is already sourced before the test starts running
> in _begin_fstest() preamble.
Indeed. The patch looks good to me.
Feel free to add:
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
>
> Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
> Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
> ---
> tests/generic/749 | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/tests/generic/749 b/tests/generic/749
> index fc747738..451f283e 100755
> --- a/tests/generic/749
> +++ b/tests/generic/749
> @@ -15,7 +15,6 @@
> # boundary and ensures we get a SIGBUS if we write to data beyond the system
> # page size even if the block size is greater than the system page size.
> . ./common/preamble
> -. ./common/rc
> _begin_fstest auto quick prealloc
>
> # Import common functions.
> --
> 2.34.1
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 2/5] check: Remove redundant _test_mount in check
2025-04-01 6:43 ` [PATCH v2 2/5] check: Remove redundant _test_mount in check Nirjhar Roy (IBM)
@ 2025-04-04 3:36 ` Ritesh Harjani
2025-04-08 5:41 ` Nirjhar Roy (IBM)
2025-04-08 5:45 ` Nirjhar Roy (IBM)
0 siblings, 2 replies; 26+ messages in thread
From: Ritesh Harjani @ 2025-04-04 3:36 UTC (permalink / raw)
To: Nirjhar Roy (IBM), fstests
Cc: linux-ext4, linux-xfs, ojaswin, djwong, zlang, david,
nirjhar.roy.lists
"Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
> init_rc already does a _test_mount. Hence removing the additional
> _test_mount call when OLD_TEST_FS_MOUNT_OPTS != TEST_FS_MOUNT_OPTS.
>
> Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
> ---
> check | 6 ------
> 1 file changed, 6 deletions(-)
>
> diff --git a/check b/check
> index 32890470..16bf1586 100755
> --- a/check
> +++ b/check
> @@ -792,12 +792,6 @@ function run_section()
> _prepare_test_list
> elif [ "$OLD_TEST_FS_MOUNT_OPTS" != "$TEST_FS_MOUNT_OPTS" ]; then
> _test_unmount 2> /dev/null
Would have been nicer if there was a small comment here like:
elif [ "$OLD_TEST_FS_MOUNT_OPTS" != "$TEST_FS_MOUNT_OPTS" ]; then
# Unmount TEST_DEV to apply the updated mount options.
# It will be mounted again by init_rc(), called shortly after.
_test_unmount 2> /dev/null
fi
init_rc
But either ways, no strong preference for adding comments here.
Feel free to add -
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
> - if ! _test_mount
> - then
> - echo "check: failed to mount $TEST_DEV on $TEST_DIR"
> - status=1
> - exit
> - fi
> fi
>
> init_rc
> --
> 2.34.1
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 3/5] check,common{rc,preamble}: Decouple init_rc() call from sourcing common/rc
2025-04-01 6:43 ` [PATCH v2 3/5] check,common{rc,preamble}: Decouple init_rc() call from sourcing common/rc Nirjhar Roy (IBM)
@ 2025-04-04 4:00 ` Ritesh Harjani
2025-04-04 4:52 ` Nirjhar Roy (IBM)
2025-04-08 5:42 ` Nirjhar Roy (IBM)
0 siblings, 2 replies; 26+ messages in thread
From: Ritesh Harjani @ 2025-04-04 4:00 UTC (permalink / raw)
To: Nirjhar Roy (IBM), fstests
Cc: linux-ext4, linux-xfs, ojaswin, djwong, zlang, david,
nirjhar.roy.lists
"Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
> Silently executing scripts during sourcing common/rc isn't good practice
> and also causes unnecessary script execution. Decouple init_rc() call
> and call init_rc() explicitly where required.
This patch looks good to me. Please feel free to add:
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
While reviewing this patch, I also noticed couple of related cleanups
which you might be interested in:
1. common/rc sources common/config which executes a function
_canonicalize_devices()
2. tests/generic/367 sources common/config which is not really
required since _begin_fstests() will anyways source common/rc and
common/config will get sourced automatically.
-ritesh
>
> Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
> ---
> check | 2 ++
> common/preamble | 1 +
> common/rc | 2 --
> 3 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/check b/check
> index 16bf1586..2d2c82ac 100755
> --- a/check
> +++ b/check
> @@ -364,6 +364,8 @@ if ! . ./common/rc; then
> exit 1
> fi
>
> +init_rc
> +
> # If the test config specified a soak test duration, see if there are any
> # unit suffixes that need converting to an integer seconds count.
> if [ -n "$SOAK_DURATION" ]; then
> diff --git a/common/preamble b/common/preamble
> index 0c9ee2e0..c92e55bb 100644
> --- a/common/preamble
> +++ b/common/preamble
> @@ -50,6 +50,7 @@ _begin_fstest()
> _register_cleanup _cleanup
>
> . ./common/rc
> + init_rc
>
> # remove previous $seqres.full before test
> rm -f $seqres.full $seqres.hints
> diff --git a/common/rc b/common/rc
> index 16d627e1..038c22f6 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -5817,8 +5817,6 @@ _require_program() {
> _have_program "$1" || _notrun "$tag required"
> }
>
> -init_rc
> -
> ################################################################################
> # make sure this script returns success
> /bin/true
> --
> 2.34.1
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 3/5] check,common{rc,preamble}: Decouple init_rc() call from sourcing common/rc
2025-04-04 4:00 ` Ritesh Harjani
@ 2025-04-04 4:52 ` Nirjhar Roy (IBM)
2025-04-08 5:42 ` Nirjhar Roy (IBM)
1 sibling, 0 replies; 26+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-04 4:52 UTC (permalink / raw)
To: Ritesh Harjani (IBM), fstests
Cc: linux-ext4, linux-xfs, ojaswin, djwong, zlang, david
On 4/4/25 09:30, Ritesh Harjani (IBM) wrote:
> "Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
>
>> Silently executing scripts during sourcing common/rc isn't good practice
>> and also causes unnecessary script execution. Decouple init_rc() call
>> and call init_rc() explicitly where required.
> This patch looks good to me. Please feel free to add:
> Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
>
>
> While reviewing this patch, I also noticed couple of related cleanups
> which you might be interested in:
>
> 1. common/rc sources common/config which executes a function
> _canonicalize_devices()
>
> 2. tests/generic/367 sources common/config which is not really
> required since _begin_fstests() will anyways source common/rc and
> common/config will get sourced automatically.
Thank you for the pointer. I can have follow-up patches for such cleanups.
--NR
>
> -ritesh
>
>> Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
>> ---
>> check | 2 ++
>> common/preamble | 1 +
>> common/rc | 2 --
>> 3 files changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/check b/check
>> index 16bf1586..2d2c82ac 100755
>> --- a/check
>> +++ b/check
>> @@ -364,6 +364,8 @@ if ! . ./common/rc; then
>> exit 1
>> fi
>>
>> +init_rc
>> +
>> # If the test config specified a soak test duration, see if there are any
>> # unit suffixes that need converting to an integer seconds count.
>> if [ -n "$SOAK_DURATION" ]; then
>> diff --git a/common/preamble b/common/preamble
>> index 0c9ee2e0..c92e55bb 100644
>> --- a/common/preamble
>> +++ b/common/preamble
>> @@ -50,6 +50,7 @@ _begin_fstest()
>> _register_cleanup _cleanup
>>
>> . ./common/rc
>> + init_rc
>>
>> # remove previous $seqres.full before test
>> rm -f $seqres.full $seqres.hints
>> diff --git a/common/rc b/common/rc
>> index 16d627e1..038c22f6 100644
>> --- a/common/rc
>> +++ b/common/rc
>> @@ -5817,8 +5817,6 @@ _require_program() {
>> _have_program "$1" || _notrun "$tag required"
>> }
>>
>> -init_rc
>> -
>> ################################################################################
>> # make sure this script returns success
>> /bin/true
>> --
>> 2.34.1
--
Nirjhar Roy
Linux Kernel Developer
IBM, Bangalore
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 4/5] common/config: Introduce _exit wrapper around exit command
2025-04-01 6:43 ` [PATCH v2 4/5] common/config: Introduce _exit wrapper around exit command Nirjhar Roy (IBM)
@ 2025-04-04 5:03 ` Ritesh Harjani
0 siblings, 0 replies; 26+ messages in thread
From: Ritesh Harjani @ 2025-04-04 5:03 UTC (permalink / raw)
To: Nirjhar Roy (IBM), fstests
Cc: linux-ext4, linux-xfs, ojaswin, djwong, zlang, david,
nirjhar.roy.lists
"Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
> We should always set the value of status correctly when we are exiting.
> Else, "$?" might not give us the correct value.
> If we see the following trap
> handler registration in the check script:
>
> if $OPTIONS_HAVE_SECTIONS; then
> trap "_kill_seq; _summary; exit \$status" 0 1 2 3 15
> else
> trap "_kill_seq; _wrapup; exit \$status" 0 1 2 3 15
> fi
>
> So, "exit 1" will exit the check script without setting the correct
> return value. I ran with the following local.config file:
>
> [xfs_4k_valid]
> FSTYP=xfs
> TEST_DEV=/dev/loop0
> TEST_DIR=/mnt1/test
> SCRATCH_DEV=/dev/loop1
> SCRATCH_MNT=/mnt1/scratch
>
> [xfs_4k_invalid]
> FSTYP=xfs
> TEST_DEV=/dev/loop0
> TEST_DIR=/mnt1/invalid_dir
> SCRATCH_DEV=/dev/loop1
> SCRATCH_MNT=/mnt1/scratch
>
> This caused the init_rc() to catch the case of invalid _test_mount
> options. Although the check script correctly failed during the execution
> of the "xfs_4k_invalid" section, the return value was 0, i.e "echo $?"
> returned 0. This is because init_rc exits with "exit 1" without
> correctly setting the value of "status". IMO, the correct behavior
> should have been that "$?" should have been non-zero.
Nice catch. Feel free to add:
Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
>
> The next patch will replace exit with _exit.
>
> Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
> ---
> common/config | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/common/config b/common/config
> index 79bec87f..eb6af35a 100644
> --- a/common/config
> +++ b/common/config
> @@ -96,6 +96,14 @@ 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.
> +_exit()
> +{
> + status="$1"
> + exit "$status"
> +}
> +
> # Handle mkfs.$fstyp which does (or does not) require -f to overwrite
> set_mkfs_prog_path_with_opts()
> {
> --
> 2.34.1
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 5/5] common: exit --> _exit
2025-04-01 6:44 ` [PATCH v2 5/5] common: exit --> _exit Nirjhar Roy (IBM)
@ 2025-04-04 5:04 ` Ritesh Harjani
2025-04-07 16:19 ` Zorro Lang
0 siblings, 1 reply; 26+ messages in thread
From: Ritesh Harjani @ 2025-04-04 5:04 UTC (permalink / raw)
To: Nirjhar Roy (IBM), fstests
Cc: linux-ext4, linux-xfs, ojaswin, djwong, zlang, david,
nirjhar.roy.lists
"Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
> Replace exit <return-val> with _exit <return-val> which
> is introduced in the previous patch.
>
> Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
> ---
> common/btrfs | 6 +--
> common/ceph | 2 +-
> common/config | 7 ++--
> common/ext4 | 2 +-
> common/populate | 2 +-
> common/preamble | 2 +-
> common/punch | 12 +++---
> common/rc | 103 +++++++++++++++++++++++-------------------------
> common/xfs | 8 ++--
> 9 files changed, 70 insertions(+), 74 deletions(-)
>
> diff --git a/common/btrfs b/common/btrfs
> index a3b9c12f..3725632c 100644
> --- a/common/btrfs
> +++ b/common/btrfs
> @@ -80,7 +80,7 @@ _require_btrfs_mkfs_feature()
> {
> if [ -z $1 ]; then
> echo "Missing feature name argument for _require_btrfs_mkfs_feature"
> - exit 1
> + _exit 1
> fi
> feat=$1
> $MKFS_BTRFS_PROG -O list-all 2>&1 | \
> @@ -104,7 +104,7 @@ _require_btrfs_fs_feature()
> {
> if [ -z $1 ]; then
> echo "Missing feature name argument for _require_btrfs_fs_feature"
> - exit 1
> + _exit 1
> fi
> feat=$1
> modprobe btrfs > /dev/null 2>&1
> @@ -214,7 +214,7 @@ _check_btrfs_filesystem()
> if [ $ok -eq 0 ]; then
> status=1
> if [ "$iam" != "check" ]; then
> - exit 1
> + _exit 1
> fi
> return 1
> fi
> diff --git a/common/ceph b/common/ceph
> index d6f24df1..df7a6814 100644
> --- a/common/ceph
> +++ b/common/ceph
> @@ -14,7 +14,7 @@ _ceph_create_file_layout()
>
> if [ -e $fname ]; then
> echo "File $fname already exists."
> - exit 1
> + _exit 1
> fi
> touch $fname
> $SETFATTR_PROG -n ceph.file.layout \
> diff --git a/common/config b/common/config
> index eb6af35a..4c5435b7 100644
> --- a/common/config
> +++ b/common/config
> @@ -123,8 +123,7 @@ set_mkfs_prog_path_with_opts()
> _fatal()
> {
> echo "$*"
> - status=1
> - exit 1
> + _exit 1
> }
>
> export MKFS_PROG="$(type -P mkfs)"
> @@ -868,7 +867,7 @@ get_next_config() {
> echo "Warning: need to define parameters for host $HOST"
> echo " or set variables:"
> echo " $MC"
> - exit 1
> + _exit 1
> fi
>
> _check_device TEST_DEV required $TEST_DEV
> @@ -879,7 +878,7 @@ get_next_config() {
> if [ ! -z "$SCRATCH_DEV_POOL" ]; then
> if [ ! -z "$SCRATCH_DEV" ]; then
> echo "common/config: Error: \$SCRATCH_DEV ($SCRATCH_DEV) should be unset when \$SCRATCH_DEV_POOL ($SCRATCH_DEV_POOL) is set"
> - exit 1
> + _exit 1
> fi
> SCRATCH_DEV=`echo $SCRATCH_DEV_POOL | awk '{print $1}'`
> export SCRATCH_DEV
> diff --git a/common/ext4 b/common/ext4
> index e1b336d3..f88fa532 100644
> --- a/common/ext4
> +++ b/common/ext4
> @@ -182,7 +182,7 @@ _require_scratch_ext4_feature()
> {
> if [ -z "$1" ]; then
> echo "Usage: _require_scratch_ext4_feature feature"
> - exit 1
> + _exit 1
> fi
> $MKFS_EXT4_PROG -F $MKFS_OPTIONS -O "$1" \
> $SCRATCH_DEV 512m >/dev/null 2>&1 \
> diff --git a/common/populate b/common/populate
> index 7352f598..50dc75d3 100644
> --- a/common/populate
> +++ b/common/populate
> @@ -1003,7 +1003,7 @@ _fill_fs()
>
> if [ $# -ne 4 ]; then
> echo "Usage: _fill_fs filesize dir blocksize switch_user"
> - exit 1
> + _exit 1
> fi
>
> if [ $switch_user -eq 0 ]; then
> diff --git a/common/preamble b/common/preamble
> index c92e55bb..ba029a34 100644
> --- a/common/preamble
> +++ b/common/preamble
> @@ -35,7 +35,7 @@ _begin_fstest()
> {
> if [ -n "$seq" ]; then
> echo "_begin_fstest can only be called once!"
> - exit 1
> + _exit 1
> fi
>
> seq=`basename $0`
> diff --git a/common/punch b/common/punch
> index 43ccab69..6567b9d1 100644
> --- a/common/punch
> +++ b/common/punch
> @@ -172,16 +172,16 @@ _filter_fiemap_flags()
> $AWK_PROG -e "$awk_script" | _coalesce_extents
> }
>
> -# Filters fiemap output to only print the
> +# Filters fiemap output to only print the
> # file offset column and whether or not
> # it is an extent or a hole
> _filter_hole_fiemap()
> {
> $AWK_PROG '
> $3 ~ /hole/ {
> - print $1, $2, $3;
> + print $1, $2, $3;
> next;
> - }
> + }
> $5 ~ /0x[[:xdigit:]]+/ {
> print $1, $2, "extent";
> }' |
> @@ -225,7 +225,7 @@ _filter_bmap()
> die_now()
> {
> status=1
> - exit
> + _exit
Why not remove status=1 too and just do _exit 1 here too?
Like how we have done at other places?
Rest looks good to me.
-ritesh
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 0/5] Minor cleanups in common/
2025-04-01 21:37 ` [PATCH v2 0/5] Minor cleanups in common/ Dave Chinner
@ 2025-04-04 14:31 ` Nirjhar Roy (IBM)
0 siblings, 0 replies; 26+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-04 14:31 UTC (permalink / raw)
To: Dave Chinner
Cc: fstests, linux-ext4, linux-xfs, ritesh.list, ojaswin, djwong,
zlang
On 4/2/25 03:07, Dave Chinner wrote:
> On Tue, Apr 01, 2025 at 06:43:55AM +0000, Nirjhar Roy (IBM) wrote:
>> This patch series removes some unnecessary sourcing of common/rc
>> and decouples the call to init_rc() from the sourcing of common/rc.
>> This is proposed in [1] and [2]. It also removes direct usage of exit command
>> with a _exit wrapper. The individual patches have the details.
>>
>> [v1] --> v[2]
>> 1. Added R.B from Darrick in patch 1 of [v1]
>> 2. Kept the init_rc call that was deleted in the v1.
>> 3. Introduced _exit wrapper around exit command. This will help us get correct
>> exit codes ("$?") on failures.
>>
>> [1] https://lore.kernel.org/all/20250206155251.GA21787@frogsfrogsfrogs/
>>
>> [2] https://lore.kernel.org/all/20250210142322.tptpphdntglsz4eq@dell-per750-06-vm-08.rhts.eng.pek2.redhat.com/
>>
>> [v1] https://lore.kernel.org/all/cover.1741248214.git.nirjhar.roy.lists@gmail.com/
>>
>> Nirjhar Roy (IBM) (5):
>> generic/749: Remove redundant sourcing of common/rc
>> check: Remove redundant _test_mount in check
>> check,common{rc,preamble}: Decouple init_rc() call from sourcing
>> common/rc
>> common/config: Introduce _exit wrapper around exit command
>> common: exit --> _exit
> Whole series looks fine to me. I've got similar patches in my
> current check-parallel stack, as well as changing common/config to
> match the "don't run setup code when sourcing the file" behaviour.
>
> Reviewed-by: Dave Chinner <dchinner@redhat.com>
Thank you for the review.
--NR
>
--
Nirjhar Roy
Linux Kernel Developer
IBM, Bangalore
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 5/5] common: exit --> _exit
2025-04-04 5:04 ` Ritesh Harjani
@ 2025-04-07 16:19 ` Zorro Lang
2025-04-07 18:46 ` Ritesh Harjani
2025-04-07 18:59 ` Nirjhar Roy (IBM)
0 siblings, 2 replies; 26+ messages in thread
From: Zorro Lang @ 2025-04-07 16:19 UTC (permalink / raw)
To: Ritesh Harjani
Cc: Nirjhar Roy (IBM), fstests, linux-ext4, linux-xfs, ojaswin,
djwong, zlang, david
On Fri, Apr 04, 2025 at 10:34:47AM +0530, Ritesh Harjani wrote:
> "Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
>
> > Replace exit <return-val> with _exit <return-val> which
> > is introduced in the previous patch.
> >
> > Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
> > ---
> > common/btrfs | 6 +--
> > common/ceph | 2 +-
> > common/config | 7 ++--
> > common/ext4 | 2 +-
> > common/populate | 2 +-
> > common/preamble | 2 +-
> > common/punch | 12 +++---
> > common/rc | 103 +++++++++++++++++++++++-------------------------
> > common/xfs | 8 ++--
> > 9 files changed, 70 insertions(+), 74 deletions(-)
> >
> > diff --git a/common/btrfs b/common/btrfs
> > index a3b9c12f..3725632c 100644
> > --- a/common/btrfs
> > +++ b/common/btrfs
> > @@ -80,7 +80,7 @@ _require_btrfs_mkfs_feature()
> > {
> > if [ -z $1 ]; then
> > echo "Missing feature name argument for _require_btrfs_mkfs_feature"
> > - exit 1
> > + _exit 1
> > fi
> > feat=$1
> > $MKFS_BTRFS_PROG -O list-all 2>&1 | \
> > @@ -104,7 +104,7 @@ _require_btrfs_fs_feature()
> > {
> > if [ -z $1 ]; then
> > echo "Missing feature name argument for _require_btrfs_fs_feature"
> > - exit 1
> > + _exit 1
> > fi
> > feat=$1
> > modprobe btrfs > /dev/null 2>&1
> > @@ -214,7 +214,7 @@ _check_btrfs_filesystem()
> > if [ $ok -eq 0 ]; then
> > status=1
> > if [ "$iam" != "check" ]; then
> > - exit 1
> > + _exit 1
> > fi
> > return 1
> > fi
> > diff --git a/common/ceph b/common/ceph
> > index d6f24df1..df7a6814 100644
> > --- a/common/ceph
> > +++ b/common/ceph
> > @@ -14,7 +14,7 @@ _ceph_create_file_layout()
> >
> > if [ -e $fname ]; then
> > echo "File $fname already exists."
> > - exit 1
> > + _exit 1
> > fi
> > touch $fname
> > $SETFATTR_PROG -n ceph.file.layout \
> > diff --git a/common/config b/common/config
> > index eb6af35a..4c5435b7 100644
> > --- a/common/config
> > +++ b/common/config
> > @@ -123,8 +123,7 @@ set_mkfs_prog_path_with_opts()
> > _fatal()
> > {
> > echo "$*"
> > - status=1
> > - exit 1
> > + _exit 1
> > }
> >
> > export MKFS_PROG="$(type -P mkfs)"
> > @@ -868,7 +867,7 @@ get_next_config() {
> > echo "Warning: need to define parameters for host $HOST"
> > echo " or set variables:"
> > echo " $MC"
> > - exit 1
> > + _exit 1
> > fi
> >
> > _check_device TEST_DEV required $TEST_DEV
> > @@ -879,7 +878,7 @@ get_next_config() {
> > if [ ! -z "$SCRATCH_DEV_POOL" ]; then
> > if [ ! -z "$SCRATCH_DEV" ]; then
> > echo "common/config: Error: \$SCRATCH_DEV ($SCRATCH_DEV) should be unset when \$SCRATCH_DEV_POOL ($SCRATCH_DEV_POOL) is set"
> > - exit 1
> > + _exit 1
> > fi
> > SCRATCH_DEV=`echo $SCRATCH_DEV_POOL | awk '{print $1}'`
> > export SCRATCH_DEV
> > diff --git a/common/ext4 b/common/ext4
> > index e1b336d3..f88fa532 100644
> > --- a/common/ext4
> > +++ b/common/ext4
> > @@ -182,7 +182,7 @@ _require_scratch_ext4_feature()
> > {
> > if [ -z "$1" ]; then
> > echo "Usage: _require_scratch_ext4_feature feature"
> > - exit 1
> > + _exit 1
> > fi
> > $MKFS_EXT4_PROG -F $MKFS_OPTIONS -O "$1" \
> > $SCRATCH_DEV 512m >/dev/null 2>&1 \
> > diff --git a/common/populate b/common/populate
> > index 7352f598..50dc75d3 100644
> > --- a/common/populate
> > +++ b/common/populate
> > @@ -1003,7 +1003,7 @@ _fill_fs()
> >
> > if [ $# -ne 4 ]; then
> > echo "Usage: _fill_fs filesize dir blocksize switch_user"
> > - exit 1
> > + _exit 1
> > fi
> >
> > if [ $switch_user -eq 0 ]; then
> > diff --git a/common/preamble b/common/preamble
> > index c92e55bb..ba029a34 100644
> > --- a/common/preamble
> > +++ b/common/preamble
> > @@ -35,7 +35,7 @@ _begin_fstest()
> > {
> > if [ -n "$seq" ]; then
> > echo "_begin_fstest can only be called once!"
> > - exit 1
> > + _exit 1
> > fi
> >
> > seq=`basename $0`
> > diff --git a/common/punch b/common/punch
> > index 43ccab69..6567b9d1 100644
> > --- a/common/punch
> > +++ b/common/punch
> > @@ -172,16 +172,16 @@ _filter_fiemap_flags()
> > $AWK_PROG -e "$awk_script" | _coalesce_extents
> > }
> >
> > -# Filters fiemap output to only print the
> > +# Filters fiemap output to only print the
> > # file offset column and whether or not
> > # it is an extent or a hole
> > _filter_hole_fiemap()
> > {
> > $AWK_PROG '
> > $3 ~ /hole/ {
> > - print $1, $2, $3;
> > + print $1, $2, $3;
> > next;
> > - }
> > + }
> > $5 ~ /0x[[:xdigit:]]+/ {
> > print $1, $2, "extent";
> > }' |
> > @@ -225,7 +225,7 @@ _filter_bmap()
> > die_now()
> > {
> > status=1
> > - exit
> > + _exit
>
> Why not remove status=1 too and just do _exit 1 here too?
> Like how we have done at other places?
Yeah, nice catch! As the defination of _exit:
_exit()
{
status="$1"
exit "$status"
}
The
"
status=1
exit
"
should be equal to:
"
_exit 1
"
And "_exit" looks not make sense, due to it gives null to status.
Same problem likes below:
@@ -3776,7 +3773,7 @@ _get_os_name()
echo 'linux'
else
echo Unknown operating system: `uname`
- exit
+ _exit
The "_exit" without argument looks not make sense.
Thanks,
Zorro
>
> Rest looks good to me.
>
> -ritesh
>
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 5/5] common: exit --> _exit
2025-04-07 16:19 ` Zorro Lang
@ 2025-04-07 18:46 ` Ritesh Harjani
2025-04-07 19:12 ` Darrick J. Wong
2025-04-07 19:13 ` Nirjhar Roy (IBM)
2025-04-07 18:59 ` Nirjhar Roy (IBM)
1 sibling, 2 replies; 26+ messages in thread
From: Ritesh Harjani @ 2025-04-07 18:46 UTC (permalink / raw)
To: Zorro Lang
Cc: Nirjhar Roy (IBM), fstests, linux-ext4, linux-xfs, ojaswin,
djwong, zlang, david
Zorro Lang <zlang@redhat.com> writes:
> On Fri, Apr 04, 2025 at 10:34:47AM +0530, Ritesh Harjani wrote:
>> "Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
>>
>> > Replace exit <return-val> with _exit <return-val> which
>> > is introduced in the previous patch.
>> >
>> > Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
<...>
>> > ---
>> > @@ -225,7 +225,7 @@ _filter_bmap()
>> > die_now()
>> > {
>> > status=1
>> > - exit
>> > + _exit
>>
>> Why not remove status=1 too and just do _exit 1 here too?
>> Like how we have done at other places?
>
> Yeah, nice catch! As the defination of _exit:
>
> _exit()
> {
> status="$1"
> exit "$status"
> }
>
> The
> "
> status=1
> exit
> "
> should be equal to:
> "
> _exit 1
> "
>
> And "_exit" looks not make sense, due to it gives null to status.
>
> Same problem likes below:
>
>
> @@ -3776,7 +3773,7 @@ _get_os_name()
> echo 'linux'
> else
> echo Unknown operating system: `uname`
> - exit
> + _exit
>
>
> The "_exit" without argument looks not make sense.
>
That's right. _exit called with no argument could make status as null.
To prevent such misuse in future, should we add a warning/echo message
if the no. of arguments passed to _exit() is not 1?
-ritesh
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 5/5] common: exit --> _exit
2025-04-07 16:19 ` Zorro Lang
2025-04-07 18:46 ` Ritesh Harjani
@ 2025-04-07 18:59 ` Nirjhar Roy (IBM)
1 sibling, 0 replies; 26+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-07 18:59 UTC (permalink / raw)
To: Zorro Lang, Ritesh Harjani
Cc: fstests, linux-ext4, linux-xfs, ojaswin, djwong, zlang, david
On 4/7/25 21:49, Zorro Lang wrote:
> On Fri, Apr 04, 2025 at 10:34:47AM +0530, Ritesh Harjani wrote:
>> "Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
>>
>>> Replace exit <return-val> with _exit <return-val> which
>>> is introduced in the previous patch.
>>>
>>> Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
>>> ---
>>> common/btrfs | 6 +--
>>> common/ceph | 2 +-
>>> common/config | 7 ++--
>>> common/ext4 | 2 +-
>>> common/populate | 2 +-
>>> common/preamble | 2 +-
>>> common/punch | 12 +++---
>>> common/rc | 103 +++++++++++++++++++++++-------------------------
>>> common/xfs | 8 ++--
>>> 9 files changed, 70 insertions(+), 74 deletions(-)
>>>
>>> diff --git a/common/btrfs b/common/btrfs
>>> index a3b9c12f..3725632c 100644
>>> --- a/common/btrfs
>>> +++ b/common/btrfs
>>> @@ -80,7 +80,7 @@ _require_btrfs_mkfs_feature()
>>> {
>>> if [ -z $1 ]; then
>>> echo "Missing feature name argument for _require_btrfs_mkfs_feature"
>>> - exit 1
>>> + _exit 1
>>> fi
>>> feat=$1
>>> $MKFS_BTRFS_PROG -O list-all 2>&1 | \
>>> @@ -104,7 +104,7 @@ _require_btrfs_fs_feature()
>>> {
>>> if [ -z $1 ]; then
>>> echo "Missing feature name argument for _require_btrfs_fs_feature"
>>> - exit 1
>>> + _exit 1
>>> fi
>>> feat=$1
>>> modprobe btrfs > /dev/null 2>&1
>>> @@ -214,7 +214,7 @@ _check_btrfs_filesystem()
>>> if [ $ok -eq 0 ]; then
>>> status=1
>>> if [ "$iam" != "check" ]; then
>>> - exit 1
>>> + _exit 1
>>> fi
>>> return 1
>>> fi
>>> diff --git a/common/ceph b/common/ceph
>>> index d6f24df1..df7a6814 100644
>>> --- a/common/ceph
>>> +++ b/common/ceph
>>> @@ -14,7 +14,7 @@ _ceph_create_file_layout()
>>>
>>> if [ -e $fname ]; then
>>> echo "File $fname already exists."
>>> - exit 1
>>> + _exit 1
>>> fi
>>> touch $fname
>>> $SETFATTR_PROG -n ceph.file.layout \
>>> diff --git a/common/config b/common/config
>>> index eb6af35a..4c5435b7 100644
>>> --- a/common/config
>>> +++ b/common/config
>>> @@ -123,8 +123,7 @@ set_mkfs_prog_path_with_opts()
>>> _fatal()
>>> {
>>> echo "$*"
>>> - status=1
>>> - exit 1
>>> + _exit 1
>>> }
>>>
>>> export MKFS_PROG="$(type -P mkfs)"
>>> @@ -868,7 +867,7 @@ get_next_config() {
>>> echo "Warning: need to define parameters for host $HOST"
>>> echo " or set variables:"
>>> echo " $MC"
>>> - exit 1
>>> + _exit 1
>>> fi
>>>
>>> _check_device TEST_DEV required $TEST_DEV
>>> @@ -879,7 +878,7 @@ get_next_config() {
>>> if [ ! -z "$SCRATCH_DEV_POOL" ]; then
>>> if [ ! -z "$SCRATCH_DEV" ]; then
>>> echo "common/config: Error: \$SCRATCH_DEV ($SCRATCH_DEV) should be unset when \$SCRATCH_DEV_POOL ($SCRATCH_DEV_POOL) is set"
>>> - exit 1
>>> + _exit 1
>>> fi
>>> SCRATCH_DEV=`echo $SCRATCH_DEV_POOL | awk '{print $1}'`
>>> export SCRATCH_DEV
>>> diff --git a/common/ext4 b/common/ext4
>>> index e1b336d3..f88fa532 100644
>>> --- a/common/ext4
>>> +++ b/common/ext4
>>> @@ -182,7 +182,7 @@ _require_scratch_ext4_feature()
>>> {
>>> if [ -z "$1" ]; then
>>> echo "Usage: _require_scratch_ext4_feature feature"
>>> - exit 1
>>> + _exit 1
>>> fi
>>> $MKFS_EXT4_PROG -F $MKFS_OPTIONS -O "$1" \
>>> $SCRATCH_DEV 512m >/dev/null 2>&1 \
>>> diff --git a/common/populate b/common/populate
>>> index 7352f598..50dc75d3 100644
>>> --- a/common/populate
>>> +++ b/common/populate
>>> @@ -1003,7 +1003,7 @@ _fill_fs()
>>>
>>> if [ $# -ne 4 ]; then
>>> echo "Usage: _fill_fs filesize dir blocksize switch_user"
>>> - exit 1
>>> + _exit 1
>>> fi
>>>
>>> if [ $switch_user -eq 0 ]; then
>>> diff --git a/common/preamble b/common/preamble
>>> index c92e55bb..ba029a34 100644
>>> --- a/common/preamble
>>> +++ b/common/preamble
>>> @@ -35,7 +35,7 @@ _begin_fstest()
>>> {
>>> if [ -n "$seq" ]; then
>>> echo "_begin_fstest can only be called once!"
>>> - exit 1
>>> + _exit 1
>>> fi
>>>
>>> seq=`basename $0`
>>> diff --git a/common/punch b/common/punch
>>> index 43ccab69..6567b9d1 100644
>>> --- a/common/punch
>>> +++ b/common/punch
>>> @@ -172,16 +172,16 @@ _filter_fiemap_flags()
>>> $AWK_PROG -e "$awk_script" | _coalesce_extents
>>> }
>>>
>>> -# Filters fiemap output to only print the
>>> +# Filters fiemap output to only print the
>>> # file offset column and whether or not
>>> # it is an extent or a hole
>>> _filter_hole_fiemap()
>>> {
>>> $AWK_PROG '
>>> $3 ~ /hole/ {
>>> - print $1, $2, $3;
>>> + print $1, $2, $3;
>>> next;
>>> - }
>>> + }
>>> $5 ~ /0x[[:xdigit:]]+/ {
>>> print $1, $2, "extent";
>>> }' |
>>> @@ -225,7 +225,7 @@ _filter_bmap()
>>> die_now()
>>> {
>>> status=1
>>> - exit
>>> + _exit
>> Why not remove status=1 too and just do _exit 1 here too?
>> Like how we have done at other places?
> Yeah, nice catch! As the defination of _exit:
>
> _exit()
> {
> status="$1"
> exit "$status"
> }
>
> The
> "
> status=1
> exit
> "
> should be equal to:
> "
> _exit 1
> "
>
> And "_exit" looks not make sense, due to it gives null to status.
>
> Same problem likes below:
>
>
> @@ -3776,7 +3773,7 @@ _get_os_name()
> echo 'linux'
> else
> echo Unknown operating system: `uname`
> - exit
> + _exit
>
>
> The "_exit" without argument looks not make sense.
Yes, thank you Ritesh and Zorro. Yes it should have been "_exit 1". I
missed it while making the changes. I will make the changes in v3 and
add RBs from Dave[1] and Ritesh.
[1] https://lore.kernel.org/all/Z-xcne3f5Klvuxcq@dread.disaster.area/
>
> Thanks,
> Zorro
>
>> Rest looks good to me.
>>
>> -ritesh
>>
--
Nirjhar Roy
Linux Kernel Developer
IBM, Bangalore
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 5/5] common: exit --> _exit
2025-04-07 18:46 ` Ritesh Harjani
@ 2025-04-07 19:12 ` Darrick J. Wong
2025-04-07 19:19 ` Nirjhar Roy (IBM)
2025-04-07 19:13 ` Nirjhar Roy (IBM)
1 sibling, 1 reply; 26+ messages in thread
From: Darrick J. Wong @ 2025-04-07 19:12 UTC (permalink / raw)
To: Ritesh Harjani
Cc: Zorro Lang, Nirjhar Roy (IBM), fstests, linux-ext4, linux-xfs,
ojaswin, zlang, david
On Tue, Apr 08, 2025 at 12:16:42AM +0530, Ritesh Harjani wrote:
> Zorro Lang <zlang@redhat.com> writes:
<snip>
> > Yeah, nice catch! As the defination of _exit:
> >
> > _exit()
> > {
> > status="$1"
> > exit "$status"
> > }
> >
> > The
> > "
> > status=1
> > exit
> > "
> > should be equal to:
> > "
> > _exit 1
> > "
> >
> > And "_exit" looks not make sense, due to it gives null to status.
> >
> > Same problem likes below:
> >
> >
> > @@ -3776,7 +3773,7 @@ _get_os_name()
> > echo 'linux'
> > else
> > echo Unknown operating system: `uname`
> > - exit
> > + _exit
> >
> >
> > The "_exit" without argument looks not make sense.
> >
>
> That's right. _exit called with no argument could make status as null.
> To prevent such misuse in future, should we add a warning/echo message
> if the no. of arguments passed to _exit() is not 1?
Why not set status only if the caller provides an argument?
test -n "$1" && status="$1"
perhaps?
--D
> -ritesh
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 5/5] common: exit --> _exit
2025-04-07 18:46 ` Ritesh Harjani
2025-04-07 19:12 ` Darrick J. Wong
@ 2025-04-07 19:13 ` Nirjhar Roy (IBM)
2025-04-08 14:27 ` Zorro Lang
1 sibling, 1 reply; 26+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-07 19:13 UTC (permalink / raw)
To: Ritesh Harjani (IBM), Zorro Lang
Cc: fstests, linux-ext4, linux-xfs, ojaswin, djwong, zlang, david
On 4/8/25 00:16, Ritesh Harjani (IBM) wrote:
> Zorro Lang <zlang@redhat.com> writes:
>
>> On Fri, Apr 04, 2025 at 10:34:47AM +0530, Ritesh Harjani wrote:
>>> "Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
>>>
>>>> Replace exit <return-val> with _exit <return-val> which
>>>> is introduced in the previous patch.
>>>>
>>>> Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
> <...>
>>>> ---
>>>> @@ -225,7 +225,7 @@ _filter_bmap()
>>>> die_now()
>>>> {
>>>> status=1
>>>> - exit
>>>> + _exit
>>> Why not remove status=1 too and just do _exit 1 here too?
>>> Like how we have done at other places?
>> Yeah, nice catch! As the defination of _exit:
>>
>> _exit()
>> {
>> status="$1"
>> exit "$status"
>> }
>>
>> The
>> "
>> status=1
>> exit
>> "
>> should be equal to:
>> "
>> _exit 1
>> "
>>
>> And "_exit" looks not make sense, due to it gives null to status.
>>
>> Same problem likes below:
>>
>>
>> @@ -3776,7 +3773,7 @@ _get_os_name()
>> echo 'linux'
>> else
>> echo Unknown operating system: `uname`
>> - exit
>> + _exit
>>
>>
>> The "_exit" without argument looks not make sense.
>>
> That's right. _exit called with no argument could make status as null.
Yes, that is correct.
> To prevent such misuse in future, should we add a warning/echo message
Yeah, the other thing that we can do is 'status=${1:-0}'. In that case,
for cases where the return value is a success, we simply use "_exit".
Which one do you think adds more value and flexibility to the usage?
--NR
> if the no. of arguments passed to _exit() is not 1?
>
> -ritesh
--
Nirjhar Roy
Linux Kernel Developer
IBM, Bangalore
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 5/5] common: exit --> _exit
2025-04-07 19:12 ` Darrick J. Wong
@ 2025-04-07 19:19 ` Nirjhar Roy (IBM)
0 siblings, 0 replies; 26+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-07 19:19 UTC (permalink / raw)
To: Darrick J. Wong, Ritesh Harjani
Cc: Zorro Lang, fstests, linux-ext4, linux-xfs, ojaswin, zlang, david
On 4/8/25 00:42, Darrick J. Wong wrote:
> On Tue, Apr 08, 2025 at 12:16:42AM +0530, Ritesh Harjani wrote:
>> Zorro Lang <zlang@redhat.com> writes:
> <snip>
>
>>> Yeah, nice catch! As the defination of _exit:
>>>
>>> _exit()
>>> {
>>> status="$1"
>>> exit "$status"
>>> }
>>>
>>> The
>>> "
>>> status=1
>>> exit
>>> "
>>> should be equal to:
>>> "
>>> _exit 1
>>> "
>>>
>>> And "_exit" looks not make sense, due to it gives null to status.
>>>
>>> Same problem likes below:
>>>
>>>
>>> @@ -3776,7 +3773,7 @@ _get_os_name()
>>> echo 'linux'
>>> else
>>> echo Unknown operating system: `uname`
>>> - exit
>>> + _exit
>>>
>>>
>>> The "_exit" without argument looks not make sense.
>>>
>> That's right. _exit called with no argument could make status as null.
>> To prevent such misuse in future, should we add a warning/echo message
>> if the no. of arguments passed to _exit() is not 1?
> Why not set status only if the caller provides an argument?
>
> test -n "$1" && status="$1"
And if the caller doesn't provide any, should status hold some default
value? I have suggested something in [1]
[1]
https://lore.kernel.org/all/3c1d608d-4ea0-4e24-9abc-95eb226101c2@gmail.com/
--NR
>
> perhaps?
>
> --D
>
>> -ritesh
--
Nirjhar Roy
Linux Kernel Developer
IBM, Bangalore
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 2/5] check: Remove redundant _test_mount in check
2025-04-04 3:36 ` Ritesh Harjani
@ 2025-04-08 5:41 ` Nirjhar Roy (IBM)
2025-04-08 5:45 ` Nirjhar Roy (IBM)
1 sibling, 0 replies; 26+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-08 5:41 UTC (permalink / raw)
To: Ritesh Harjani (IBM), fstests
Cc: linux-ext4, linux-xfs, ojaswin, djwong, zlang, david
On 4/4/25 09:06, Ritesh Harjani (IBM) wrote:
> "Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
>
>> init_rc already does a _test_mount. Hence removing the additional
>> _test_mount call when OLD_TEST_FS_MOUNT_OPTS != TEST_FS_MOUNT_OPTS.
>>
>> Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
>> ---
>> check | 6 ------
>> 1 file changed, 6 deletions(-)
>>
>> diff --git a/check b/check
>> index 32890470..16bf1586 100755
>> --- a/check
>> +++ b/check
>> @@ -792,12 +792,6 @@ function run_section()
>> _prepare_test_list
>> elif [ "$OLD_TEST_FS_MOUNT_OPTS" != "$TEST_FS_MOUNT_OPTS" ]; then
>> _test_unmount 2> /dev/null
> Would have been nicer if there was a small comment here like:
>
> elif [ "$OLD_TEST_FS_MOUNT_OPTS" != "$TEST_FS_MOUNT_OPTS" ]; then
> # Unmount TEST_DEV to apply the updated mount options.
> # It will be mounted again by init_rc(), called shortly after.
> _test_unmount 2> /dev/null
> fi
>
> init_rc
>
> But either ways, no strong preference for adding comments here.
Added in [v3]
[v3]
https://lore.kernel.org/all/ffefbe485f71206dd2a0a27256d1101d2b0c7a64.1744090313.git.nirjhar.roy.lists@gmail.com/
Thank you for pointing out.
--NR
>
> Feel free to add -
> Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
>
>
>> - if ! _test_mount
>> - then
>> - echo "check: failed to mount $TEST_DEV on $TEST_DIR"
>> - status=1
>> - exit
>> - fi
>> fi
>>
>> init_rc
>> --
>> 2.34.1
--
Nirjhar Roy
Linux Kernel Developer
IBM, Bangalore
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 3/5] check,common{rc,preamble}: Decouple init_rc() call from sourcing common/rc
2025-04-04 4:00 ` Ritesh Harjani
2025-04-04 4:52 ` Nirjhar Roy (IBM)
@ 2025-04-08 5:42 ` Nirjhar Roy (IBM)
1 sibling, 0 replies; 26+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-08 5:42 UTC (permalink / raw)
To: Ritesh Harjani (IBM), fstests
Cc: linux-ext4, linux-xfs, ojaswin, djwong, zlang, david
On 4/4/25 09:30, Ritesh Harjani (IBM) wrote:
> "Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
>
>> Silently executing scripts during sourcing common/rc isn't good practice
>> and also causes unnecessary script execution. Decouple init_rc() call
>> and call init_rc() explicitly where required.
> This patch looks good to me. Please feel free to add:
> Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
>
>
> While reviewing this patch, I also noticed couple of related cleanups
> which you might be interested in:
>
> 1. common/rc sources common/config which executes a function
> _canonicalize_devices()
>
> 2. tests/generic/367 sources common/config which is not really
> required since _begin_fstests() will anyways source common/rc and
> common/config will get sourced automatically.
Addressed 2 in [v3].
[v3]
https://lore.kernel.org/all/ffefbe485f71206dd2a0a27256d1101d2b0c7a64.1744090313.git.nirjhar.roy.lists@gmail.com/
Thanks.
--NR
>
> -ritesh
>
>> Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
>> ---
>> check | 2 ++
>> common/preamble | 1 +
>> common/rc | 2 --
>> 3 files changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/check b/check
>> index 16bf1586..2d2c82ac 100755
>> --- a/check
>> +++ b/check
>> @@ -364,6 +364,8 @@ if ! . ./common/rc; then
>> exit 1
>> fi
>>
>> +init_rc
>> +
>> # If the test config specified a soak test duration, see if there are any
>> # unit suffixes that need converting to an integer seconds count.
>> if [ -n "$SOAK_DURATION" ]; then
>> diff --git a/common/preamble b/common/preamble
>> index 0c9ee2e0..c92e55bb 100644
>> --- a/common/preamble
>> +++ b/common/preamble
>> @@ -50,6 +50,7 @@ _begin_fstest()
>> _register_cleanup _cleanup
>>
>> . ./common/rc
>> + init_rc
>>
>> # remove previous $seqres.full before test
>> rm -f $seqres.full $seqres.hints
>> diff --git a/common/rc b/common/rc
>> index 16d627e1..038c22f6 100644
>> --- a/common/rc
>> +++ b/common/rc
>> @@ -5817,8 +5817,6 @@ _require_program() {
>> _have_program "$1" || _notrun "$tag required"
>> }
>>
>> -init_rc
>> -
>> ################################################################################
>> # make sure this script returns success
>> /bin/true
>> --
>> 2.34.1
--
Nirjhar Roy
Linux Kernel Developer
IBM, Bangalore
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 2/5] check: Remove redundant _test_mount in check
2025-04-04 3:36 ` Ritesh Harjani
2025-04-08 5:41 ` Nirjhar Roy (IBM)
@ 2025-04-08 5:45 ` Nirjhar Roy (IBM)
1 sibling, 0 replies; 26+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-08 5:45 UTC (permalink / raw)
To: Ritesh Harjani (IBM), fstests
Cc: linux-ext4, linux-xfs, ojaswin, djwong, zlang, david
On 4/4/25 09:06, Ritesh Harjani (IBM) wrote:
> "Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
>
>> init_rc already does a _test_mount. Hence removing the additional
>> _test_mount call when OLD_TEST_FS_MOUNT_OPTS != TEST_FS_MOUNT_OPTS.
>>
>> Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
>> ---
>> check | 6 ------
>> 1 file changed, 6 deletions(-)
>>
>> diff --git a/check b/check
>> index 32890470..16bf1586 100755
>> --- a/check
>> +++ b/check
>> @@ -792,12 +792,6 @@ function run_section()
>> _prepare_test_list
>> elif [ "$OLD_TEST_FS_MOUNT_OPTS" != "$TEST_FS_MOUNT_OPTS" ]; then
>> _test_unmount 2> /dev/null
> Would have been nicer if there was a small comment here like:
>
> elif [ "$OLD_TEST_FS_MOUNT_OPTS" != "$TEST_FS_MOUNT_OPTS" ]; then
> # Unmount TEST_DEV to apply the updated mount options.
> # It will be mounted again by init_rc(), called shortly after.
> _test_unmount 2> /dev/null
> fi
>
> init_rc
>
> But either ways, no strong preference for adding comments here.
Addressed in
https://lore.kernel.org/all/fa1bfd04d6b592f4d812a90039c643a02d7e1033.1744090313.git.nirjhar.roy.lists@gmail.com/
. Please ignore the previous link. I mistakenly gave the link to patch 2/6.
--NR
>
> Feel free to add -
> Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com>
>
>
>> - if ! _test_mount
>> - then
>> - echo "check: failed to mount $TEST_DEV on $TEST_DIR"
>> - status=1
>> - exit
>> - fi
>> fi
>>
>> init_rc
>> --
>> 2.34.1
--
Nirjhar Roy
Linux Kernel Developer
IBM, Bangalore
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 5/5] common: exit --> _exit
2025-04-07 19:13 ` Nirjhar Roy (IBM)
@ 2025-04-08 14:27 ` Zorro Lang
2025-04-08 14:33 ` Darrick J. Wong
0 siblings, 1 reply; 26+ messages in thread
From: Zorro Lang @ 2025-04-08 14:27 UTC (permalink / raw)
To: Nirjhar Roy (IBM)
Cc: Ritesh Harjani (IBM), fstests, linux-ext4, linux-xfs, ojaswin,
djwong, zlang, david
On Tue, Apr 08, 2025 at 12:43:32AM +0530, Nirjhar Roy (IBM) wrote:
>
> On 4/8/25 00:16, Ritesh Harjani (IBM) wrote:
> > Zorro Lang <zlang@redhat.com> writes:
> >
> > > On Fri, Apr 04, 2025 at 10:34:47AM +0530, Ritesh Harjani wrote:
> > > > "Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
> > > >
> > > > > Replace exit <return-val> with _exit <return-val> which
> > > > > is introduced in the previous patch.
> > > > >
> > > > > Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
> > <...>
> > > > > ---
> > > > > @@ -225,7 +225,7 @@ _filter_bmap()
> > > > > die_now()
> > > > > {
> > > > > status=1
> > > > > - exit
> > > > > + _exit
> > > > Why not remove status=1 too and just do _exit 1 here too?
> > > > Like how we have done at other places?
> > > Yeah, nice catch! As the defination of _exit:
> > >
> > > _exit()
> > > {
> > > status="$1"
> > > exit "$status"
> > > }
> > >
> > > The
> > > "
> > > status=1
> > > exit
> > > "
> > > should be equal to:
> > > "
> > > _exit 1
> > > "
> > >
> > > And "_exit" looks not make sense, due to it gives null to status.
> > >
> > > Same problem likes below:
> > >
> > >
> > > @@ -3776,7 +3773,7 @@ _get_os_name()
> > > echo 'linux'
> > > else
> > > echo Unknown operating system: `uname`
> > > - exit
> > > + _exit
> > >
> > >
> > > The "_exit" without argument looks not make sense.
> > >
> > That's right. _exit called with no argument could make status as null.
> Yes, that is correct.
> > To prevent such misuse in future, should we add a warning/echo message
>
> Yeah, the other thing that we can do is 'status=${1:-0}'. In that case, for
^^^^^^^^^^^^^^
That's good to me, I'm just wondering if the default value should be "1", to
tell us "hey, there's an unknown exit status" :)
Thanks,
Zorro
> cases where the return value is a success, we simply use "_exit". Which one
> do you think adds more value and flexibility to the usage?
>
> --NR
>
> > if the no. of arguments passed to _exit() is not 1?
> >
> > -ritesh
>
> --
> Nirjhar Roy
> Linux Kernel Developer
> IBM, Bangalore
>
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 5/5] common: exit --> _exit
2025-04-08 14:27 ` Zorro Lang
@ 2025-04-08 14:33 ` Darrick J. Wong
2025-04-08 16:25 ` Nirjhar Roy (IBM)
0 siblings, 1 reply; 26+ messages in thread
From: Darrick J. Wong @ 2025-04-08 14:33 UTC (permalink / raw)
To: Zorro Lang
Cc: Nirjhar Roy (IBM), Ritesh Harjani (IBM), fstests, linux-ext4,
linux-xfs, ojaswin, zlang, david
On Tue, Apr 08, 2025 at 10:27:48PM +0800, Zorro Lang wrote:
> On Tue, Apr 08, 2025 at 12:43:32AM +0530, Nirjhar Roy (IBM) wrote:
> >
> > On 4/8/25 00:16, Ritesh Harjani (IBM) wrote:
> > > Zorro Lang <zlang@redhat.com> writes:
> > >
> > > > On Fri, Apr 04, 2025 at 10:34:47AM +0530, Ritesh Harjani wrote:
> > > > > "Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
> > > > >
> > > > > > Replace exit <return-val> with _exit <return-val> which
> > > > > > is introduced in the previous patch.
> > > > > >
> > > > > > Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
> > > <...>
> > > > > > ---
> > > > > > @@ -225,7 +225,7 @@ _filter_bmap()
> > > > > > die_now()
> > > > > > {
> > > > > > status=1
> > > > > > - exit
> > > > > > + _exit
> > > > > Why not remove status=1 too and just do _exit 1 here too?
> > > > > Like how we have done at other places?
> > > > Yeah, nice catch! As the defination of _exit:
> > > >
> > > > _exit()
> > > > {
> > > > status="$1"
> > > > exit "$status"
> > > > }
> > > >
> > > > The
> > > > "
> > > > status=1
> > > > exit
> > > > "
> > > > should be equal to:
> > > > "
> > > > _exit 1
> > > > "
> > > >
> > > > And "_exit" looks not make sense, due to it gives null to status.
> > > >
> > > > Same problem likes below:
> > > >
> > > >
> > > > @@ -3776,7 +3773,7 @@ _get_os_name()
> > > > echo 'linux'
> > > > else
> > > > echo Unknown operating system: `uname`
> > > > - exit
> > > > + _exit
> > > >
> > > >
> > > > The "_exit" without argument looks not make sense.
> > > >
> > > That's right. _exit called with no argument could make status as null.
> > Yes, that is correct.
> > > To prevent such misuse in future, should we add a warning/echo message
> >
> > Yeah, the other thing that we can do is 'status=${1:-0}'. In that case, for
> ^^^^^^^^^^^^^^
> That's good to me, I'm just wondering if the default value should be "1", to
> tell us "hey, there's an unknown exit status" :)
I think status=1 usually means failure...
/usr/include/stdlib.h:92:#define EXIT_FAILURE 1 /* Failing exit status. */
/usr/include/stdlib.h:93:#define EXIT_SUCCESS 0 /* Successful exit status. */
--D
> Thanks,
> Zorro
>
> > cases where the return value is a success, we simply use "_exit". Which one
> > do you think adds more value and flexibility to the usage?
> >
> > --NR
> >
> > > if the no. of arguments passed to _exit() is not 1?
> > >
> > > -ritesh
> >
> > --
> > Nirjhar Roy
> > Linux Kernel Developer
> > IBM, Bangalore
> >
>
>
^ permalink raw reply [flat|nested] 26+ messages in thread
* Re: [PATCH v2 5/5] common: exit --> _exit
2025-04-08 14:33 ` Darrick J. Wong
@ 2025-04-08 16:25 ` Nirjhar Roy (IBM)
0 siblings, 0 replies; 26+ messages in thread
From: Nirjhar Roy (IBM) @ 2025-04-08 16:25 UTC (permalink / raw)
To: Darrick J. Wong, Zorro Lang
Cc: Ritesh Harjani (IBM), fstests, linux-ext4, linux-xfs, ojaswin,
zlang, david
On 4/8/25 20:03, Darrick J. Wong wrote:
> On Tue, Apr 08, 2025 at 10:27:48PM +0800, Zorro Lang wrote:
>> On Tue, Apr 08, 2025 at 12:43:32AM +0530, Nirjhar Roy (IBM) wrote:
>>> On 4/8/25 00:16, Ritesh Harjani (IBM) wrote:
>>>> Zorro Lang <zlang@redhat.com> writes:
>>>>
>>>>> On Fri, Apr 04, 2025 at 10:34:47AM +0530, Ritesh Harjani wrote:
>>>>>> "Nirjhar Roy (IBM)" <nirjhar.roy.lists@gmail.com> writes:
>>>>>>
>>>>>>> Replace exit <return-val> with _exit <return-val> which
>>>>>>> is introduced in the previous patch.
>>>>>>>
>>>>>>> Signed-off-by: Nirjhar Roy (IBM) <nirjhar.roy.lists@gmail.com>
>>>> <...>
>>>>>>> ---
>>>>>>> @@ -225,7 +225,7 @@ _filter_bmap()
>>>>>>> die_now()
>>>>>>> {
>>>>>>> status=1
>>>>>>> - exit
>>>>>>> + _exit
>>>>>> Why not remove status=1 too and just do _exit 1 here too?
>>>>>> Like how we have done at other places?
>>>>> Yeah, nice catch! As the defination of _exit:
>>>>>
>>>>> _exit()
>>>>> {
>>>>> status="$1"
>>>>> exit "$status"
>>>>> }
>>>>>
>>>>> The
>>>>> "
>>>>> status=1
>>>>> exit
>>>>> "
>>>>> should be equal to:
>>>>> "
>>>>> _exit 1
>>>>> "
>>>>>
>>>>> And "_exit" looks not make sense, due to it gives null to status.
>>>>>
>>>>> Same problem likes below:
>>>>>
>>>>>
>>>>> @@ -3776,7 +3773,7 @@ _get_os_name()
>>>>> echo 'linux'
>>>>> else
>>>>> echo Unknown operating system: `uname`
>>>>> - exit
>>>>> + _exit
>>>>>
>>>>>
>>>>> The "_exit" without argument looks not make sense.
>>>>>
>>>> That's right. _exit called with no argument could make status as null.
>>> Yes, that is correct.
>>>> To prevent such misuse in future, should we add a warning/echo message
>>> Yeah, the other thing that we can do is 'status=${1:-0}'. In that case, for
>> ^^^^^^^^^^^^^^
>> That's good to me, I'm just wondering if the default value should be "1", to
>> tell us "hey, there's an unknown exit status" :)
> I think status=1 usually means failure...
>
> /usr/include/stdlib.h:92:#define EXIT_FAILURE 1 /* Failing exit status. */
> /usr/include/stdlib.h:93:#define EXIT_SUCCESS 0 /* Successful exit status. */
Yeah, right. I like Darrick's suggestion to explicitly set the value of
status in _exit() only if it is passed (test -n "$1" && status="$1").
This will preserve any intentional pre-set value of status. I have sent
a [v3] for this series but haven't modified the definition of _exit. I
will wait for further comments on [v3] and make this change (along with
the other changes that will be suggested).
[v3]
https://lore.kernel.org/all/cover.1744090313.git.nirjhar.roy.lists@gmail.com/
--NR
>
> --D
>
>> Thanks,
>> Zorro
>>
>>> cases where the return value is a success, we simply use "_exit". Which one
>>> do you think adds more value and flexibility to the usage?
>>>
>>> --NR
>>>
>>>> if the no. of arguments passed to _exit() is not 1?
>>>>
>>>> -ritesh
>>> --
>>> Nirjhar Roy
>>> Linux Kernel Developer
>>> IBM, Bangalore
>>>
>>
--
Nirjhar Roy
Linux Kernel Developer
IBM, Bangalore
^ permalink raw reply [flat|nested] 26+ messages in thread
end of thread, other threads:[~2025-04-08 16:25 UTC | newest]
Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-01 6:43 [PATCH v2 0/5] Minor cleanups in common/ Nirjhar Roy (IBM)
2025-04-01 6:43 ` [PATCH v2 1/5] generic/749: Remove redundant sourcing of common/rc Nirjhar Roy (IBM)
2025-04-04 3:31 ` Ritesh Harjani
2025-04-01 6:43 ` [PATCH v2 2/5] check: Remove redundant _test_mount in check Nirjhar Roy (IBM)
2025-04-04 3:36 ` Ritesh Harjani
2025-04-08 5:41 ` Nirjhar Roy (IBM)
2025-04-08 5:45 ` Nirjhar Roy (IBM)
2025-04-01 6:43 ` [PATCH v2 3/5] check,common{rc,preamble}: Decouple init_rc() call from sourcing common/rc Nirjhar Roy (IBM)
2025-04-04 4:00 ` Ritesh Harjani
2025-04-04 4:52 ` Nirjhar Roy (IBM)
2025-04-08 5:42 ` Nirjhar Roy (IBM)
2025-04-01 6:43 ` [PATCH v2 4/5] common/config: Introduce _exit wrapper around exit command Nirjhar Roy (IBM)
2025-04-04 5:03 ` Ritesh Harjani
2025-04-01 6:44 ` [PATCH v2 5/5] common: exit --> _exit Nirjhar Roy (IBM)
2025-04-04 5:04 ` Ritesh Harjani
2025-04-07 16:19 ` Zorro Lang
2025-04-07 18:46 ` Ritesh Harjani
2025-04-07 19:12 ` Darrick J. Wong
2025-04-07 19:19 ` Nirjhar Roy (IBM)
2025-04-07 19:13 ` Nirjhar Roy (IBM)
2025-04-08 14:27 ` Zorro Lang
2025-04-08 14:33 ` Darrick J. Wong
2025-04-08 16:25 ` Nirjhar Roy (IBM)
2025-04-07 18:59 ` Nirjhar Roy (IBM)
2025-04-01 21:37 ` [PATCH v2 0/5] Minor cleanups in common/ Dave Chinner
2025-04-04 14:31 ` 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