[LTP] [PATCH v2 2/6] zram01.sh: Generate test setup variables in setup
Petr Vorel
pvorel@suse.cz
Fri Jan 29 20:41:40 CET 2021
Generate variables in setup, based on output of tst_supported_fs.
This is more clean approach and it fixes various things:
* Error when there is no filesystem support and also mkfs.ext2
(fallback) not installed:
/opt/ltp/testcases/bin/zram01.sh: line 198: mkfs.ext2: not found
Instead quit if there is no fs support. But this can lead to skipping
zram_compress_alg(), it will be solved next commit by moving
zram_compress_alg() to zram02.sh.
* Having ext2 as fallback could lead to run it more than once.
There is no much point to do that.
* Drop tst_require_cmds mkfs check, because mkfs is not actually needed.
Improvements:
* Test all suitable filesystems (will need increase timeout).
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
changes v1->v2:
Completely rewritten.
.../kernel/device-drivers/zram/zram01.sh | 62 ++++++++++++++-----
.../kernel/device-drivers/zram/zram_lib.sh | 18 +++---
2 files changed, 56 insertions(+), 24 deletions(-)
diff --git a/testcases/kernel/device-drivers/zram/zram01.sh b/testcases/kernel/device-drivers/zram/zram01.sh
index a795ff89f..c5d4a3e51 100755
--- a/testcases/kernel/device-drivers/zram/zram01.sh
+++ b/testcases/kernel/device-drivers/zram/zram01.sh
@@ -8,23 +8,25 @@
TST_CNT=7
TST_TESTFUNC="do_test"
-TST_NEEDS_CMDS="awk bc dd"
+TST_NEEDS_CMDS="awk bc dd grep"
. zram_lib.sh
+TST_SETUP="setup"
-# List of parameters for zram devices.
-# For each number the test creates own zram device.
-zram_max_streams="2 3 5 8"
-
-FS_SIZE="402653184"
-FS_TYPE="btrfs"
+get_btrfs_size()
+{
+ local ram_size
-RAM_SIZE=$(awk '/MemTotal:/ {print $2}' /proc/meminfo)
-if [ "$RAM_SIZE" -lt 1048576 ]; then
- tst_res TINFO "not enough space for Btrfs"
- FS_SIZE="26214400"
- FS_TYPE="ext2"
-fi
+ ram_size=$(awk '/MemTotal:/ {print $2}' /proc/meminfo)
+ if [ "$ram_size" -lt 1048576 ]; then
+ tst_res TINFO "not enough space for Btrfs"
+ return 1
+ fi
+ return 0
+}
+# List of parameters for zram devices.
+# For each number the test creates own zram device.
+# NOTE about size:
# The zram sysfs node 'disksize' value can be either in bytes,
# or you can use mem suffixes. But in some old kernels, mem
# suffixes are not supported, for example, in RHEL6.6GA's kernel
@@ -32,9 +34,37 @@ fi
# not support mem suffixes, in some newer kernels, they use
# memparse() which supports mem suffixes. So here we just use
# bytes to make sure everything works correctly.
-zram_sizes="26214400 26214400 26214400 $FS_SIZE"
-zram_mem_limits="25M 25M 25M $((FS_SIZE/1024/1024))M"
-zram_filesystems="ext3 ext4 xfs $FS_TYPE"
+generate_vars()
+{
+ local fs limit size stream=-1
+ dev_num=0
+
+ for fs in $(tst_supported_fs | grep -v -e fat -e ntfs -e fuse); do
+ size="26214400"
+ limit="25M"
+ if [ "$fs" = "btrfs" ]; then
+ get_btrfs_size || continue
+ size="402653184"
+ limit="$((size/1024/1024))M"
+ fi
+
+ stream=$((stream+3))
+ dev_num=$((dev_num+1))
+ zram_filesystems="$zram_filesystems $fs"
+ zram_mem_limits="$zram_mem_limits $limit"
+ zram_sizes="$zram_sizes $size"
+ zram_max_streams="$zram_max_streams $stream"
+ done
+
+ [ $dev_num -eq 0 ] && \
+ tst_brk TCONF "no suitable filesystem"
+}
+
+setup()
+{
+ generate_vars
+ zram_load
+}
zram_fill_fs()
{
diff --git a/testcases/kernel/device-drivers/zram/zram_lib.sh b/testcases/kernel/device-drivers/zram/zram_lib.sh
index a7e8b9f5b..d4aaf0c3e 100755
--- a/testcases/kernel/device-drivers/zram/zram_lib.sh
+++ b/testcases/kernel/device-drivers/zram/zram_lib.sh
@@ -36,10 +36,12 @@ zram_load()
{
local tmp
- dev_num=0
- for tmp in $zram_max_streams; do
- dev_num=$((dev_num+1))
- done
+ if [ -z "$dev_num" ]; then
+ dev_num=0
+ for tmp in $zram_max_streams; do
+ dev_num=$((dev_num+1))
+ done
+ fi
if [ $dev_num -le 0 ]; then
tst_brk TBROK "dev_num must be > 0"
@@ -129,6 +131,7 @@ zram_set_disksizes()
i=$(($i + 1))
tst_res TINFO "$sys_path = '$ds' ($i/$dev_num)"
+ [ $i -eq $dev_num ] && break
done
tst_res TPASS "test succeeded"
@@ -155,6 +158,7 @@ zram_set_memlimit()
i=$(($i + 1))
tst_res TINFO "$sys_path = '$ds' ($i/$dev_num)"
+ [ $i -eq $dev_num ] && break
done
tst_res TPASS "test succeeded"
@@ -191,13 +195,10 @@ zram_swapoff()
zram_makefs()
{
- tst_require_cmds mkfs
local i=0
+ local fs
for fs in $zram_filesystems; do
- # if requested fs not supported default it to ext2
- tst_supported_fs $fs 2> /dev/null || fs=ext2
-
tst_res TINFO "make $fs filesystem on /dev/zram$i"
mkfs.$fs /dev/zram$i > err.log 2>&1
if [ $? -ne 0 ]; then
@@ -206,6 +207,7 @@ zram_makefs()
fi
i=$(($i + 1))
+ [ $i -eq $dev_num ] && break
done
tst_res TPASS "zram_makefs succeeded"
--
2.30.0
More information about the ltp
mailing list