Re: [PATCH v2] 251: Make fstrim call a bit more random

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

 



On Thu, 1 Mar 2012, Lukas Czerner wrote:

> To cover cases when fstrim arguments are not block/block group/file
> system size aligned, we can be a bit more random. This commit changes
> fstrim argument computing to use $RANDOM bash variable in order to have
> different minlen, start, len argument settings and change the full fs
> fstrim to be called randomly as well.
> 
> Also make kill and wait not complain about non existent process, since
> it may have already finished before we attempt to kill it and wait for
> it. No reason to fail the test.

ping

> 
> Signed-off-by: Lukas Czerner <lczerner@xxxxxxxxxx>
> ---
> v2: guess maximum minlen so we do not fail if milnen limitation
>     of the fs is too small.
> 
>  251 |   36 +++++++++++++++++++++++++-----------
>  1 files changed, 25 insertions(+), 11 deletions(-)
> 
> diff --git a/251 b/251
> index fa3d74a..6d87bf4 100755
> --- a/251
> +++ b/251
> @@ -54,21 +54,21 @@ _cleanup()
>  
>  _destroy()
>  {
> -	kill $pids $fstrim_pid
> -	wait $pids $fstrim_pid
> +	kill $pids $fstrim_pid 2> /dev/null
> +	wait $pids $fstrim_pid 2> /dev/null
>  	rm -rf $tmp
>  }
>  
>  _destroy_fstrim()
>  {
> -	kill $fpid
> -	wait $fpid
> +	kill $fpid 2> /dev/null
> +	wait $fpid 2> /dev/null
>  }
>  
>  _fail()
>  {
>  	echo "$1"
> -	kill $mypid
> +	kill $mypid 2> /dev/null
>  }
>  
>  _check_fstrim_support()
> @@ -76,6 +76,16 @@ _check_fstrim_support()
>  	$here/src/fstrim -l 10M $SCRATCH_MNT &> /dev/null
>  }
>  
> +_guess_max_minlen()
> +{
> +	mmlen=100000
> +	while [ $mmlen -gt 1 ]; do
> +		$here/src/fstrim -l $(($mmlen*2))k -m ${mmlen}k $SCRATCH_MNT &> /dev/null && break
> +		mmlen=$(($mmlen/2))
> +	done
> +	echo $mmlen
> +}
> +
>  ##
>  # Background FSTRIM loop. We are trimming the device in the loop and for
>  # test coverage, we are doing whole device trim followed by several smaller
> @@ -85,15 +95,19 @@ fstrim_loop()
>  {
>  	trap "_destroy_fstrim; exit \$status" 2 15
>  	fsize=$(df | grep $SCRATCH_MNT | grep $SCRATCH_DEV  | awk '{print $2}')
> +	mmlen=$(_guess_max_minlen)
>  
>  	while true ; do
> -		step=1048576
> -		start=0
> -		$here/src/fstrim $SCRATCH_MNT &
> -		fpid=$!
> -		wait $fpid
> +		step=$((RANDOM*$RANDOM))
> +		minlen=$(((RANDOM*($RANDOM%2+1))%$mmlen))
> +		start=$RANDOM
> +		if [ $((RANDOM%10)) -gt 7 ]; then
> +			$here/src/fstrim $SCRATCH_MNT &
> +			fpid=$!
> +			wait $fpid
> +		fi
>  		while [ $start -lt $fsize ] ; do
> -			$here/src/fstrim -s ${start}k -l ${step}k $SCRATCH_MNT &
> +			$here/src/fstrim -m ${minlen}k -s ${start}k -l ${step}k $SCRATCH_MNT &
>  			fpid=$!
>  			wait $fpid
>  			start=$(( $start + $step ))
> 

-- 

_______________________________________________
xfs mailing list
xfs@xxxxxxxxxxx
http://oss.sgi.com/mailman/listinfo/xfs


[Index of Archives]     [Linux XFS Devel]     [Linux Filesystem Development]     [Filesystem Testing]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux