xfs
[Top] [All Lists]

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

To: Lukas Czerner <lczerner@xxxxxxxxxx>
Subject: Re: [PATCH v2] 251: Make fstrim call a bit more random
From: Lukas Czerner <lczerner@xxxxxxxxxx>
Date: Tue, 20 Mar 2012 13:02:41 +0100 (CET)
Cc: xfs@xxxxxxxxxxx, elder@xxxxxxxxxxxxx
In-reply-to: <1330589716-32362-1-git-send-email-lczerner@xxxxxxxxxx>
References: <1330439400-26390-1-git-send-email-lczerner@xxxxxxxxxx> <1330589716-32362-1-git-send-email-lczerner@xxxxxxxxxx>
User-agent: Alpine 2.00 (LFD 1167 2008-08-23)
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 ))
> 

-- 

<Prev in Thread] Current Thread [Next in Thread>