zram01: Fix division by 0
diff mbox series

Message ID 20190731063320.4898-1-pvorel@suse.cz
State Superseded
Delegated to: Petr Vorel
Headers show
Series
  • zram01: Fix division by 0
Related show

Commit Message

Petr Vorel July 31, 2019, 6:33 a.m. UTC
Sometimes free reports no memory use by zram, which leads to division by 0:
zram01 8 TINFO: zram used 0M, zram disk sizes 104857600M
/opt/ltp/testcases/bin/zram01.sh: line 87: 100 * 104857600 / 0: division by 0 (error token is "0")

TBROK the test in that case.

Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
 testcases/kernel/device-drivers/zram/zram01.sh | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Li Wang July 31, 2019, 7:16 a.m. UTC | #1
> +       if [ $used_mem -eq 0 ]; then
> +               tst_resm TBROK "no memory used by zram"
> +               return
> +       fi

Why not use tst_brkm directly? Otherwise looks good to me.
Petr Vorel July 31, 2019, 7:27 a.m. UTC | #2
Hi Li,

> > +       if [ $used_mem -eq 0 ]; then
> > +               tst_resm TBROK "no memory used by zram"
> > +               return
> > +       fi

> Why not use tst_brkm directly? Otherwise looks good to me.
Make sense.
Thanks for your ack, lets wait for Alexey.

I wonder how this can happen (found occasionally on ppc64le).

If this happen than zram02 and zram03 fails on timeout:
/opt/ltp/testcases/bin/zram_lib.sh: line 38: echo: write error: Device or resource busy
zram03      1  TBROK  :  safe_file_ops.c:301: Failed to close FILE '/sys/block/zram0/disksize' at zram03.c:87: errno=EBUSY(16): Device or resource busy

Maybe some timeout would help, need to look into it.

Petr
Alexey Kodanev Aug. 7, 2019, 2:16 p.m. UTC | #3
On 31.07.2019 10:27, Petr Vorel wrote:
> Hi Li,
> 
>>> +       if [ $used_mem -eq 0 ]; then
>>> +               tst_resm TBROK "no memory used by zram"
>>> +               return
>>> +       fi
> 
>> Why not use tst_brkm directly? Otherwise looks good to me.
> Make sense.
> Thanks for your ack, lets wait for Alexey.
> 
> I wonder how this can happen (found occasionally on ppc64le).
> 

Is it actually working, i.e. writing to zram?

      while true; do
          dd conv=notrunc if=/dev/zero of=zram${i}/file \
             oflag=append count=1 bs=1024 status=none \
             > /dev/null 2>&1 || break
          b=$(($b + 1))
      done
      tst_resm TINFO "zram$i can be filled with '$b' KB"

Perhaps, we could add a check for the minimum value of $b and print
the last error from dd too...

> If this happen than zram02 and zram03 fails on timeout:
> /opt/ltp/testcases/bin/zram_lib.sh: line 38: echo: write error: Device or resource busy
> zram03      1  TBROK  :  safe_file_ops.c:301: Failed to close FILE '/sys/block/zram0/disksize' at zram03.c:87: errno=EBUSY(16): Device or resource busy
> 
> Maybe some timeout would help, need to look into it.
> 
> Petr
>

Patch
diff mbox series

diff --git a/testcases/kernel/device-drivers/zram/zram01.sh b/testcases/kernel/device-drivers/zram/zram01.sh
index 7d3951aa5..79e18cbb7 100755
--- a/testcases/kernel/device-drivers/zram/zram01.sh
+++ b/testcases/kernel/device-drivers/zram/zram01.sh
@@ -82,6 +82,11 @@  zram_fill_fs()
 		total_size=$(($total_size + $s))
 	done
 
+	if [ $used_mem -eq 0 ]; then
+		tst_resm TBROK "no memory used by zram"
+		return
+	fi
+
 	tst_resm TINFO "zram used ${used_mem}M, zram disk sizes ${total_size}M"
 
 	local v=$((100 * $total_size / $used_mem))