diff mbox series

commands/mkswap01.sh: Revert the original retry loops

Message ID 1529551625-366-1-git-send-email-yangx.jy@cn.fujitsu.com
State Superseded
Delegated to: Petr Vorel
Headers show
Series commands/mkswap01.sh: Revert the original retry loops | expand

Commit Message

Xiao Yang June 21, 2018, 3:27 a.m. UTC
Before kernel commit c3473c6(e.g. RHEL6), mkswap -L or mkswap -U for loop
devices can not generate corresponding "/dev/disk/by-*" files and gets TBROK.
It is just a way to check the success of mkswap rather than a bug, so the test
should not get TBROK when "/dev/disk/by-*" files are not generated but swapon
enable loop devices for swapping sucessfully.

Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
---
 testcases/commands/mkswap/mkswap01.sh | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

Comments

Li Wang June 22, 2018, 10:20 a.m. UTC | #1
Hi Xiao,

Xiao Yang <yangx.jy@cn.fujitsu.com> wrote:
> Before kernel commit c3473c6(e.g. RHEL6), mkswap -L or mkswap -U for loop
> devices can not generate corresponding "/dev/disk/by-*" files and gets TBROK.
> It is just a way to check the success of mkswap rather than a bug, so the test
> should not get TBROK when "/dev/disk/by-*" files are not generated but swapon
> enable loop devices for swapping sucessfully.

Thanks for reporting this.

>
> Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
> ---
>  testcases/commands/mkswap/mkswap01.sh | 19 +++++++++++++++----
>  1 file changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/testcases/commands/mkswap/mkswap01.sh b/testcases/commands/mkswap/mkswap01.sh
> index 5ead4cd..1c01c86 100755
> --- a/testcases/commands/mkswap/mkswap01.sh
> +++ b/testcases/commands/mkswap/mkswap01.sh
> @@ -37,14 +37,25 @@ setup()
>         DEVICE_SIZE=$((($real_size/$PAGE_SIZE * $PAGE_SIZE)/1024))
>  }
>
> -check_for_file()
> +wait_for_file()
>  {
>         local path="$1"
> +       local retries=10
>
> -       if [ -z "$path" -o -e "$path" ]; then
> +       if [ -z "$path" ]; then
>                 return
>         fi
> -       return 1
> +
> +       while [ $retries -gt 0 ]; do
> +               if [ -e "$path" ]; then
> +                       return
> +               fi
> +               tst_res TINFO "Waiting for $path to appear"
> +               retries=$((retries - 1))
> +               tst_sleep 10ms
> +       done
> +
> +       tst_res TINFO "The file $path haven't appeared"
>  }
>
>  mkswap_verify()
> @@ -64,7 +75,7 @@ mkswap_verify()
>                 local pagesize=$PAGE_SIZE
>         fi
>
> -       TST_RETRY_FUNC "check_for_file $dev_file" 0
> +       wait_for_file "$dev_file"
>
>         swapon $swapfile 2>/dev/null

To revert this patch is also not wise for old kernels (without commit
c3473c63542), because the kernel has to finish this looping to wait
for a disk label that will never appear.

So, what about just wait 100ms for old kernels directly?

--- a/testcases/commands/mkswap/mkswap01.sh
+++ b/testcases/commands/mkswap/mkswap01.sh
@@ -64,7 +64,11 @@ mkswap_verify()
                local pagesize=$PAGE_SIZE
        fi

-       TST_RETRY_FUNC "check_for_file $dev_file" 0
+       if tst_kvcmp -lt '2.6.35'; then
+               tst_resm TINFO "Waiting for $dev_file to appear"
+               tst_sleep 100ms
+       else
+               TST_RETRY_FUNC "check_for_file $dev_file" 0

        swapon $swapfile 2>/dev/null
Xiao Yang June 24, 2018, 5:25 a.m. UTC | #2
On 2018/06/22 18:20, Li Wang wrote:
> Hi Xiao,
>
> Xiao Yang<yangx.jy@cn.fujitsu.com>  wrote:
>> Before kernel commit c3473c6(e.g. RHEL6), mkswap -L or mkswap -U for loop
>> devices can not generate corresponding "/dev/disk/by-*" files and gets TBROK.
>> It is just a way to check the success of mkswap rather than a bug, so the test
>> should not get TBROK when "/dev/disk/by-*" files are not generated but swapon
>> enable loop devices for swapping sucessfully.
> Thanks for reporting this.
>
>> Signed-off-by: Xiao Yang<yangx.jy@cn.fujitsu.com>
>> ---
>>   testcases/commands/mkswap/mkswap01.sh | 19 +++++++++++++++----
>>   1 file changed, 15 insertions(+), 4 deletions(-)
>>
>> diff --git a/testcases/commands/mkswap/mkswap01.sh b/testcases/commands/mkswap/mkswap01.sh
>> index 5ead4cd..1c01c86 100755
>> --- a/testcases/commands/mkswap/mkswap01.sh
>> +++ b/testcases/commands/mkswap/mkswap01.sh
>> @@ -37,14 +37,25 @@ setup()
>>          DEVICE_SIZE=$((($real_size/$PAGE_SIZE * $PAGE_SIZE)/1024))
>>   }
>>
>> -check_for_file()
>> +wait_for_file()
>>   {
>>          local path="$1"
>> +       local retries=10
>>
>> -       if [ -z "$path" -o -e "$path" ]; then
>> +       if [ -z "$path" ]; then
>>                  return
>>          fi
>> -       return 1
>> +
>> +       while [ $retries -gt 0 ]; do
>> +               if [ -e "$path" ]; then
>> +                       return
>> +               fi
>> +               tst_res TINFO "Waiting for $path to appear"
>> +               retries=$((retries - 1))
>> +               tst_sleep 10ms
>> +       done
>> +
>> +       tst_res TINFO "The file $path haven't appeared"
>>   }
>>
>>   mkswap_verify()
>> @@ -64,7 +75,7 @@ mkswap_verify()
>>                  local pagesize=$PAGE_SIZE
>>          fi
>>
>> -       TST_RETRY_FUNC "check_for_file $dev_file" 0
>> +       wait_for_file "$dev_file"
>>
>>          swapon $swapfile 2>/dev/null
> To revert this patch is also not wise for old kernels (without commit
> c3473c63542), because the kernel has to finish this looping to wait
> for a disk label that will never appear.
>
> So, what about just wait 100ms for old kernels directly?
Hi Li,

OK, it is reasonabel to me, and i will send v2 patch.

Thanks,
Xiao Yang
> --- a/testcases/commands/mkswap/mkswap01.sh
> +++ b/testcases/commands/mkswap/mkswap01.sh
> @@ -64,7 +64,11 @@ mkswap_verify()
>                  local pagesize=$PAGE_SIZE
>          fi
>
> -       TST_RETRY_FUNC "check_for_file $dev_file" 0
> +       if tst_kvcmp -lt '2.6.35'; then
> +               tst_resm TINFO "Waiting for $dev_file to appear"
> +               tst_sleep 100ms
> +       else
> +               TST_RETRY_FUNC "check_for_file $dev_file" 0
>
>          swapon $swapfile 2>/dev/null
>
>
diff mbox series

Patch

diff --git a/testcases/commands/mkswap/mkswap01.sh b/testcases/commands/mkswap/mkswap01.sh
index 5ead4cd..1c01c86 100755
--- a/testcases/commands/mkswap/mkswap01.sh
+++ b/testcases/commands/mkswap/mkswap01.sh
@@ -37,14 +37,25 @@  setup()
 	DEVICE_SIZE=$((($real_size/$PAGE_SIZE * $PAGE_SIZE)/1024))
 }
 
-check_for_file()
+wait_for_file()
 {
 	local path="$1"
+	local retries=10
 
-	if [ -z "$path" -o -e "$path" ]; then
+	if [ -z "$path" ]; then
 		return
 	fi
-	return 1
+
+	while [ $retries -gt 0 ]; do
+		if [ -e "$path" ]; then
+			return
+		fi
+		tst_res TINFO "Waiting for $path to appear"
+		retries=$((retries - 1))
+		tst_sleep 10ms
+	done
+
+	tst_res TINFO "The file $path haven't appeared"
 }
 
 mkswap_verify()
@@ -64,7 +75,7 @@  mkswap_verify()
 		local pagesize=$PAGE_SIZE
 	fi
 
-	TST_RETRY_FUNC "check_for_file $dev_file" 0
+	wait_for_file "$dev_file"
 
 	swapon $swapfile 2>/dev/null