blob: 6f872f266fd1151b6771f55147d265468a3ad74d [file] [log] [blame]
Naresh Kambojuf21fb792015-08-18 12:31:59 +05301#!/bin/sh
Thomas Gleixner71700662019-05-19 15:51:55 +02002# SPDX-License-Identifier: GPL-2.0-or-later
Naresh Kambojuf21fb792015-08-18 12:31:59 +05303# Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved.
4#
Naresh Kambojuf21fb792015-08-18 12:31:59 +05305# Author: Alexey Kodanev <alexey.kodanev@oracle.com>
6# Modified: Naresh Kamboju <naresh.kamboju@linaro.org>
7
8MODULE=0
9dev_makeswap=-1
10dev_mounted=-1
11
Shuah Khan (Samsung OSG)68581442018-06-14 16:56:13 -060012# Kselftest framework requirement - SKIP code is 4.
13ksft_skip=4
14
Naresh Kambojuf21fb792015-08-18 12:31:59 +053015trap INT
16
Naresh Kamboju2dfb28e2015-08-31 17:11:55 +053017check_prereqs()
18{
19 local msg="skip all tests:"
Zhang Zhen7ef7cc92015-09-14 12:13:27 +080020 local uid=$(id -u)
Naresh Kamboju2dfb28e2015-08-31 17:11:55 +053021
Zhang Zhen7ef7cc92015-09-14 12:13:27 +080022 if [ $uid -ne 0 ]; then
Naresh Kamboju2dfb28e2015-08-31 17:11:55 +053023 echo $msg must be run as root >&2
Shuah Khan (Samsung OSG)68581442018-06-14 16:56:13 -060024 exit $ksft_skip
Naresh Kamboju2dfb28e2015-08-31 17:11:55 +053025 fi
26}
27
Naresh Kambojuf21fb792015-08-18 12:31:59 +053028zram_cleanup()
29{
30 echo "zram cleanup"
31 local i=
32 for i in $(seq 0 $dev_makeswap); do
33 swapoff /dev/zram$i
34 done
35
36 for i in $(seq 0 $dev_mounted); do
37 umount /dev/zram$i
38 done
39
40 for i in $(seq 0 $(($dev_num - 1))); do
41 echo 1 > /sys/block/zram${i}/reset
42 rm -rf zram$i
43 done
44
45}
46
47zram_unload()
48{
49 if [ $MODULE -ne 0 ] ; then
50 echo "zram rmmod zram"
51 rmmod zram > /dev/null 2>&1
52 fi
53}
54
55zram_load()
56{
57 # check zram module exists
58 MODULE_PATH=/lib/modules/`uname -r`/kernel/drivers/block/zram/zram.ko
59 if [ -f $MODULE_PATH ]; then
60 MODULE=1
61 echo "create '$dev_num' zram device(s)"
62 modprobe zram num_devices=$dev_num
63 if [ $? -ne 0 ]; then
64 echo "failed to insert zram module"
65 exit 1
66 fi
67
68 dev_num_created=$(ls /dev/zram* | wc -w)
69
70 if [ "$dev_num_created" -ne "$dev_num" ]; then
71 echo "unexpected num of devices: $dev_num_created"
72 ERR_CODE=-1
73 else
74 echo "zram load module successful"
75 fi
76 elif [ -b /dev/zram0 ]; then
77 echo "/dev/zram0 device file found: OK"
78 else
79 echo "ERROR: No zram.ko module or no /dev/zram0 device found"
80 echo "$TCID : CONFIG_ZRAM is not set"
81 exit 1
82 fi
83}
84
85zram_max_streams()
86{
87 echo "set max_comp_streams to zram device(s)"
88
89 local i=0
90 for max_s in $zram_max_streams; do
91 local sys_path="/sys/block/zram${i}/max_comp_streams"
92 echo $max_s > $sys_path || \
93 echo "FAIL failed to set '$max_s' to $sys_path"
94 sleep 1
95 local max_streams=$(cat $sys_path)
96
97 [ "$max_s" -ne "$max_streams" ] && \
98 echo "FAIL can't set max_streams '$max_s', get $max_stream"
99
100 i=$(($i + 1))
101 echo "$sys_path = '$max_streams' ($i/$dev_num)"
102 done
103
104 echo "zram max streams: OK"
105}
106
107zram_compress_alg()
108{
109 echo "test that we can set compression algorithm"
110
111 local algs=$(cat /sys/block/zram0/comp_algorithm)
112 echo "supported algs: $algs"
113 local i=0
114 for alg in $zram_algs; do
115 local sys_path="/sys/block/zram${i}/comp_algorithm"
116 echo "$alg" > $sys_path || \
117 echo "FAIL can't set '$alg' to $sys_path"
118 i=$(($i + 1))
119 echo "$sys_path = '$alg' ($i/$dev_num)"
120 done
121
122 echo "zram set compression algorithm: OK"
123}
124
125zram_set_disksizes()
126{
127 echo "set disk size to zram device(s)"
128 local i=0
129 for ds in $zram_sizes; do
130 local sys_path="/sys/block/zram${i}/disksize"
131 echo "$ds" > $sys_path || \
132 echo "FAIL can't set '$ds' to $sys_path"
133
134 i=$(($i + 1))
135 echo "$sys_path = '$ds' ($i/$dev_num)"
136 done
137
138 echo "zram set disksizes: OK"
139}
140
141zram_set_memlimit()
142{
143 echo "set memory limit to zram device(s)"
144
145 local i=0
146 for ds in $zram_mem_limits; do
147 local sys_path="/sys/block/zram${i}/mem_limit"
148 echo "$ds" > $sys_path || \
149 echo "FAIL can't set '$ds' to $sys_path"
150
151 i=$(($i + 1))
152 echo "$sys_path = '$ds' ($i/$dev_num)"
153 done
154
155 echo "zram set memory limit: OK"
156}
157
158zram_makeswap()
159{
160 echo "make swap with zram device(s)"
161 local i=0
162 for i in $(seq 0 $(($dev_num - 1))); do
163 mkswap /dev/zram$i > err.log 2>&1
164 if [ $? -ne 0 ]; then
165 cat err.log
166 echo "FAIL mkswap /dev/zram$1 failed"
167 fi
168
169 swapon /dev/zram$i > err.log 2>&1
170 if [ $? -ne 0 ]; then
171 cat err.log
172 echo "FAIL swapon /dev/zram$1 failed"
173 fi
174
175 echo "done with /dev/zram$i"
176 dev_makeswap=$i
177 done
178
179 echo "zram making zram mkswap and swapon: OK"
180}
181
182zram_swapoff()
183{
184 local i=
185 for i in $(seq 0 $dev_makeswap); do
186 swapoff /dev/zram$i > err.log 2>&1
187 if [ $? -ne 0 ]; then
188 cat err.log
189 echo "FAIL swapoff /dev/zram$i failed"
190 fi
191 done
192 dev_makeswap=-1
193
194 echo "zram swapoff: OK"
195}
196
197zram_makefs()
198{
199 local i=0
200 for fs in $zram_filesystems; do
201 # if requested fs not supported default it to ext2
202 which mkfs.$fs > /dev/null 2>&1 || fs=ext2
203
204 echo "make $fs filesystem on /dev/zram$i"
205 mkfs.$fs /dev/zram$i > err.log 2>&1
206 if [ $? -ne 0 ]; then
207 cat err.log
208 echo "FAIL failed to make $fs on /dev/zram$i"
209 fi
210 i=$(($i + 1))
211 echo "zram mkfs.$fs: OK"
212 done
213}
214
215zram_mount()
216{
217 local i=0
218 for i in $(seq 0 $(($dev_num - 1))); do
219 echo "mount /dev/zram$i"
220 mkdir zram$i
221 mount /dev/zram$i zram$i > /dev/null || \
222 echo "FAIL mount /dev/zram$i failed"
223 dev_mounted=$i
224 done
225
226 echo "zram mount of zram device(s): OK"
227}