From: Eva Kurchatova <eva.kurchatova@virtuozzo.com>
To: khorenko@virtuozzo.com
Cc: devel@openvz.org
Subject: [Devel] [PATCH hci-8.1] selftests/zram: use the device ids that hot_add returns
Date: Tue, 3 Nov 2026 13:03:39 +0200 [thread overview]
Message-ID: <20261103110354.2525675-1-eva.kurchatova@virtuozzo.com> (raw)
zram_load() numbers the devices it creates by counting the nodes in
/dev and discards the ids hot_add returns. hot_add takes the lowest
free id, so once the ids have a gap the test works on a device it did
not create: with zram0 and zram2 present it creates zram1, then
configures, formats and mounts zram2, and finally resets and removes
zram2 and leaves zram1 behind.
Keep the ids hot_add returns and use them in every step and in the
cleanup. A hot_add that fails now fails the test.
Fixes: 01dabed20573 ("selftests/zram: Adapt the situation that /dev/zram0 is being used")
https://virtuozzo.atlassian.net/browse/VSTOR-152656
Feature: fix selftests
Signed-off-by: Eva Kurchatova <eva.kurchatova@virtuozzo.com>
---
tools/testing/selftests/zram/zram01.sh | 2 +-
tools/testing/selftests/zram/zram_lib.sh | 85 +++++++++++++-----------
2 files changed, 49 insertions(+), 38 deletions(-)
diff --git a/tools/testing/selftests/zram/zram01.sh b/tools/testing/selftests/zram/zram01.sh
index 8f337e6adf8b..582f7987437b 100755
--- a/tools/testing/selftests/zram/zram01.sh
+++ b/tools/testing/selftests/zram/zram01.sh
@@ -37,7 +37,7 @@ zram_fill_fs()
# An earlier step failed, and after a failed mount the directory
# would be filled on the host's filesystem
[ $ERR_CODE -ne 0 ] && return
- for i in $(seq $dev_start $dev_end); do
+ for i in $dev_ids; do
echo "fill zram$i..."
local b=0
while [ true ]; do
diff --git a/tools/testing/selftests/zram/zram_lib.sh b/tools/testing/selftests/zram/zram_lib.sh
index f32c86c876d3..59b7f91a0c9e 100755
--- a/tools/testing/selftests/zram/zram_lib.sh
+++ b/tools/testing/selftests/zram/zram_lib.sh
@@ -5,10 +5,9 @@
# Author: Alexey Kodanev <alexey.kodanev@oracle.com>
# Modified: Naresh Kamboju <naresh.kamboju@linaro.org>
-dev_makeswap=-1
-dev_mounted=-1
-dev_start=0
-dev_end=-1
+dev_ids=
+dev_makeswap=
+dev_mounted=
module_load=-1
sys_control=-1
# Kselftest framework requirement - SKIP code is 4.
@@ -55,21 +54,21 @@ zram_cleanup()
{
echo "zram cleanup"
local i=
- for i in $(seq $dev_start $dev_makeswap); do
+ for i in $dev_makeswap; do
swapoff /dev/zram$i
done
- for i in $(seq $dev_start $dev_mounted); do
+ for i in $dev_mounted; do
umount /dev/zram$i
done
- for i in $(seq $dev_start $dev_end); do
+ for i in $dev_ids; do
echo 1 > /sys/block/zram${i}/reset
rm -rf zram$i
done
if [ $sys_control -eq 1 ]; then
- for i in $(seq $dev_start $dev_end); do
+ for i in $dev_ids; do
echo $i > /sys/class/zram-control/hot_remove
done
fi
@@ -87,16 +86,19 @@ zram_load()
if [ -d "/sys/class/zram-control" ]; then
echo "zram modules already loaded, kernel supports" \
"zram-control interface"
- dev_start=$(ls /dev/zram* | wc -w)
- dev_end=$(($dev_start + $dev_num - 1))
sys_control=1
- for i in $(seq $dev_start $dev_end); do
- cat /sys/class/zram-control/hot_add > /dev/null
+ local id
+ for i in $(seq $dev_num); do
+ id=$(cat /sys/class/zram-control/hot_add) || {
+ echo "FAIL can't add a zram device"
+ zram_cleanup
+ exit 1
+ }
+ dev_ids="$dev_ids $id"
done
- echo "all zram devices (/dev/zram$dev_start~$dev_end" \
- "successfully created"
+ echo "zram devices created:$dev_ids"
return 0
fi
@@ -119,8 +121,8 @@ zram_load()
fi
module_load=1
- dev_end=$(($dev_num - 1))
- echo "all zram devices (/dev/zram0~$dev_end) successfully created"
+ dev_ids=$(seq 0 $(($dev_num - 1)))
+ echo "all zram devices (/dev/zram0~$(($dev_num - 1))) successfully created"
}
zram_max_streams()
@@ -134,8 +136,11 @@ zram_max_streams()
return 0
fi
- local i=$dev_start
+ local i
+ set -- $dev_ids
for max_s in $zram_max_streams; do
+ i=$1
+ shift
local sys_path="/sys/block/zram${i}/max_comp_streams"
echo $max_s > $sys_path || \
{ echo "FAIL failed to set '$max_s' to $sys_path"; ERR_CODE=-1; }
@@ -147,7 +152,6 @@ zram_max_streams()
ERR_CODE=-1
fi
- i=$(($i + 1))
echo "$sys_path = '$max_streams'"
done
@@ -158,16 +162,19 @@ zram_compress_alg()
{
echo "test that we can set compression algorithm"
- local i=$dev_start
- local algs=$(cat /sys/block/zram${i}/comp_algorithm)
+ local i
+ set -- $dev_ids
+ local algs=$(cat /sys/block/zram$1/comp_algorithm)
echo "supported algs: $algs"
if [ -z "$algs" ]; then
- echo "FAIL can't read /sys/block/zram${i}/comp_algorithm"
+ echo "FAIL can't read /sys/block/zram$1/comp_algorithm"
ERR_CODE=-1
return
fi
for alg in $zram_algs; do
+ i=$1
+ shift
local sys_path="/sys/block/zram${i}/comp_algorithm"
# A kernel built without the algorithm is not a zram failure
case " $(echo "$algs" | tr -d '[]') " in
@@ -175,13 +182,11 @@ zram_compress_alg()
*)
echo "SKIP '$alg' is not supported by this kernel"
SKIP_CODE=$ksft_skip
- i=$(($i + 1))
continue
;;
esac
echo "$alg" > $sys_path || \
{ echo "FAIL can't set '$alg' to $sys_path"; ERR_CODE=-1; }
- i=$(($i + 1))
echo "$sys_path = '$alg'"
done
@@ -191,13 +196,15 @@ zram_compress_alg()
zram_set_disksizes()
{
echo "set disk size to zram device(s)"
- local i=$dev_start
+ local i
+ set -- $dev_ids
for ds in $zram_sizes; do
+ i=$1
+ shift
local sys_path="/sys/block/zram${i}/disksize"
echo "$ds" > $sys_path || \
{ echo "FAIL can't set '$ds' to $sys_path"; ERR_CODE=-1; }
- i=$(($i + 1))
echo "$sys_path = '$ds'"
done
@@ -208,13 +215,15 @@ zram_set_memlimit()
{
echo "set memory limit to zram device(s)"
- local i=$dev_start
+ local i
+ set -- $dev_ids
for ds in $zram_mem_limits; do
+ i=$1
+ shift
local sys_path="/sys/block/zram${i}/mem_limit"
echo "$ds" > $sys_path || \
{ echo "FAIL can't set '$ds' to $sys_path"; ERR_CODE=-1; }
- i=$(($i + 1))
echo "$sys_path = '$ds'"
done
@@ -224,8 +233,8 @@ zram_set_memlimit()
zram_makeswap()
{
echo "make swap with zram device(s)"
- local i=$dev_start
- for i in $(seq $dev_start $dev_end); do
+ local i=
+ for i in $dev_ids; do
mkswap /dev/zram$i > err.log 2>&1
if [ $? -ne 0 ]; then
cat err.log
@@ -241,7 +250,7 @@ zram_makeswap()
fi
echo "done with /dev/zram$i"
- dev_makeswap=$i
+ dev_makeswap="$dev_makeswap $i"
done
echo "zram making zram mkswap and swapon: OK"
@@ -250,7 +259,7 @@ zram_makeswap()
zram_swapoff()
{
local i=
- for i in $(seq $dev_start $dev_end); do
+ for i in $dev_ids; do
swapoff /dev/zram$i > err.log 2>&1
if [ $? -ne 0 ]; then
cat err.log
@@ -258,15 +267,18 @@ zram_swapoff()
ERR_CODE=-1
fi
done
- dev_makeswap=-1
+ dev_makeswap=
echo "zram swapoff: OK"
}
zram_makefs()
{
- local i=$dev_start
+ local i
+ set -- $dev_ids
for fs in $zram_filesystems; do
+ i=$1
+ shift
# if requested fs not supported default it to ext2
which mkfs.$fs > /dev/null 2>&1 || fs=ext2
@@ -277,20 +289,19 @@ zram_makefs()
echo "FAIL failed to make $fs on /dev/zram$i"
ERR_CODE=-1
fi
- i=$(($i + 1))
echo "zram mkfs.$fs: OK"
done
}
zram_mount()
{
- local i=0
- for i in $(seq $dev_start $dev_end); do
+ local i=
+ for i in $dev_ids; do
echo "mount /dev/zram$i"
mkdir zram$i
mount /dev/zram$i zram$i > /dev/null || \
{ echo "FAIL mount /dev/zram$i failed"; ERR_CODE=-1; }
- dev_mounted=$i
+ dev_mounted="$dev_mounted $i"
done
echo "zram mount of zram device(s): OK"
--
2.56.0
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel
next reply other threads:[~2026-11-03 11:05 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-03 11:03 Eva Kurchatova [this message]
2026-11-03 11:07 ` no-reply
2026-11-03 17:40 ` Konstantin Khorenko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261103110354.2525675-1-eva.kurchatova@virtuozzo.com \
--to=eva.kurchatova@virtuozzo.com \
--cc=devel@openvz.org \
--cc=khorenko@virtuozzo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.