Re: [PATCH blktests] nvme/053: do not use awk

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2025-01-16 at 16:17 +0900, Shin'ichiro Kawasaki wrote:
> Luis observed that the test case nvme/053 fails in his environment
> [1]
> due to the following awk error message:
> 
>  awk: ...rescan.awk:2: warning: The time extension is obsolete.
>  Use the timex extension from gawkextlib
> 
> To avoid the failure and reduce dependencies, do not use awk in the
> test
> case. Instead, introduce the bash function get_sleep_time() to
> calculate
> the sleep time. Also implement the controller rescan loop in bash,
> following Martin's original patch [2].
> 
> [1]
> https://lore.kernel.org/linux-block/20241218111340.3912034-1-mcgrof@xxxxxxxxxx/
> [2]
> https://lore.kernel.org/linux-nvme/20240822193814.106111-3-mwilck@xxxxxxxx/
> 
> Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@xxxxxxx>

LGTM

Reviewed-by: Martin Wilck <mwilck@xxxxxxxx>



> ---
>  tests/nvme/053 | 34 ++++++++++++++--------------------
>  1 file changed, 14 insertions(+), 20 deletions(-)
> 
> diff --git a/tests/nvme/053 b/tests/nvme/053
> index 3ade8d3..99dbd38 100755
> --- a/tests/nvme/053
> +++ b/tests/nvme/053
> @@ -12,8 +12,15 @@ DESCRIPTION="test controller rescan under I/O
> load"
>  TIMED=1
>  : "${TIMEOUT:=60}"
>  
> +get_sleep_time() {
> +	local duration=$((RANDOM % 50 + 1))
> +
> +	echo "$((duration / 10)).$((duration % 10))"
> +}
> +
>  rescan_controller() {
> -	local path
> +	local path finish
> +
>  	path="$1/rescan_controller"
>  
>  	[[ -f "$path" ]] || {
> @@ -21,24 +28,12 @@ rescan_controller() {
>  		return 1
>  	}
>  
> -	awk -f "$TMPDIR/rescan.awk" \
> -	    -v path="$path" -v timeout="$TIMEOUT" -v seed="$2" &
> -}
> -
> -create_rescan_script() {
> -	cat >"$TMPDIR/rescan.awk" <<EOF
> -@load "time"
> -
> -BEGIN {
> -    srand(seed);
> -    finish = gettimeofday() + strtonum(timeout);
> -    while (gettimeofday() < finish) {
> -	sleep(0.1 + 5 * rand());
> -	printf("1\n") > path;
> -	close(path);
> -    }
> -}
> -EOF
> +	finish=$(($(date +%s) + TIMEOUT))
> +	while [[ $(date +%s) -le $finish ]]; do
> +		# sleep interval between 0.1 and 5s
> +		sleep "$(get_sleep_time)"
> +		echo 1 >"$path"
> +	done
>  }
>  
>  test_device() {
> @@ -46,7 +41,6 @@ test_device() {
>  	local i st line
>  
>  	echo "Running ${TEST_NAME}"
> -	create_rescan_script
>  
>  	while IFS= read -r line; do
>  		ctrls+=("$line")






[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux