blob: 3b6abf1942d728deffc038aae071e7cb402c3545 [file] [log] [blame]
Naresh Kambojuf21fb792015-08-18 12:31:59 +05301#!/bin/sh
2# Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved.
3#
4# This program is free software; you can redistribute it and/or
5# modify it under the terms of the GNU General Public License as
6# published by the Free Software Foundation; either version 2 of
7# the License, or (at your option) any later version.
8#
9# This program is distributed in the hope that it would be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU General Public License for more details.
13#
14# Author: Alexey Kodanev <alexey.kodanev@oracle.com>
15# Modified: Naresh Kamboju <naresh.kamboju@linaro.org>
16
17MODULE=0
18dev_makeswap=-1
19dev_mounted=-1
20
21trap INT
22
23zram_cleanup()
24{
25 echo "zram cleanup"
26 local i=
27 for i in $(seq 0 $dev_makeswap); do
28 swapoff /dev/zram$i
29 done
30
31 for i in $(seq 0 $dev_mounted); do
32 umount /dev/zram$i
33 done
34
35 for i in $(seq 0 $(($dev_num - 1))); do
36 echo 1 > /sys/block/zram${i}/reset
37 rm -rf zram$i
38 done
39
40}
41
42zram_unload()
43{
44 if [ $MODULE -ne 0 ] ; then
45 echo "zram rmmod zram"
46 rmmod zram > /dev/null 2>&1
47 fi
48}
49
50zram_load()
51{
52 # check zram module exists
53 MODULE_PATH=/lib/modules/`uname -r`/kernel/drivers/block/zram/zram.ko
54 if [ -f $MODULE_PATH ]; then
55 MODULE=1
56 echo "create '$dev_num' zram device(s)"
57 modprobe zram num_devices=$dev_num
58 if [ $? -ne 0 ]; then
59 echo "failed to insert zram module"
60 exit 1
61 fi
62
63 dev_num_created=$(ls /dev/zram* | wc -w)
64
65 if [ "$dev_num_created" -ne "$dev_num" ]; then
66 echo "unexpected num of devices: $dev_num_created"
67 ERR_CODE=-1
68 else
69 echo "zram load module successful"
70 fi
71 elif [ -b /dev/zram0 ]; then
72 echo "/dev/zram0 device file found: OK"
73 else
74 echo "ERROR: No zram.ko module or no /dev/zram0 device found"
75 echo "$TCID : CONFIG_ZRAM is not set"
76 exit 1
77 fi
78}
79
80zram_max_streams()
81{
82 echo "set max_comp_streams to zram device(s)"
83
84 local i=0
85 for max_s in $zram_max_streams; do
86 local sys_path="/sys/block/zram${i}/max_comp_streams"
87 echo $max_s > $sys_path || \
88 echo "FAIL failed to set '$max_s' to $sys_path"
89 sleep 1
90 local max_streams=$(cat $sys_path)
91
92 [ "$max_s" -ne "$max_streams" ] && \
93 echo "FAIL can't set max_streams '$max_s', get $max_stream"
94
95 i=$(($i + 1))
96 echo "$sys_path = '$max_streams' ($i/$dev_num)"
97 done
98
99 echo "zram max streams: OK"
100}
101
102zram_compress_alg()
103{
104 echo "test that we can set compression algorithm"
105
106 local algs=$(cat /sys/block/zram0/comp_algorithm)
107 echo "supported algs: $algs"
108 local i=0
109 for alg in $zram_algs; do
110 local sys_path="/sys/block/zram${i}/comp_algorithm"
111 echo "$alg" > $sys_path || \
112 echo "FAIL can't set '$alg' to $sys_path"
113 i=$(($i + 1))
114 echo "$sys_path = '$alg' ($i/$dev_num)"
115 done
116
117 echo "zram set compression algorithm: OK"
118}
119
120zram_set_disksizes()
121{
122 echo "set disk size to zram device(s)"
123 local i=0
124 for ds in $zram_sizes; do
125 local sys_path="/sys/block/zram${i}/disksize"
126 echo "$ds" > $sys_path || \
127 echo "FAIL can't set '$ds' to $sys_path"
128
129 i=$(($i + 1))
130 echo "$sys_path = '$ds' ($i/$dev_num)"
131 done
132
133 echo "zram set disksizes: OK"
134}
135
136zram_set_memlimit()
137{
138 echo "set memory limit to zram device(s)"
139
140 local i=0
141 for ds in $zram_mem_limits; do
142 local sys_path="/sys/block/zram${i}/mem_limit"
143 echo "$ds" > $sys_path || \
144 echo "FAIL can't set '$ds' to $sys_path"
145
146 i=$(($i + 1))
147 echo "$sys_path = '$ds' ($i/$dev_num)"
148 done
149
150 echo "zram set memory limit: OK"
151}
152
153zram_makeswap()
154{
155 echo "make swap with zram device(s)"
156 local i=0
157 for i in $(seq 0 $(($dev_num - 1))); do
158 mkswap /dev/zram$i > err.log 2>&1
159 if [ $? -ne 0 ]; then
160 cat err.log
161 echo "FAIL mkswap /dev/zram$1 failed"
162 fi
163
164 swapon /dev/zram$i > err.log 2>&1
165 if [ $? -ne 0 ]; then
166 cat err.log
167 echo "FAIL swapon /dev/zram$1 failed"
168 fi
169
170 echo "done with /dev/zram$i"
171 dev_makeswap=$i
172 done
173
174 echo "zram making zram mkswap and swapon: OK"
175}
176
177zram_swapoff()
178{
179 local i=
180 for i in $(seq 0 $dev_makeswap); do
181 swapoff /dev/zram$i > err.log 2>&1
182 if [ $? -ne 0 ]; then
183 cat err.log
184 echo "FAIL swapoff /dev/zram$i failed"
185 fi
186 done
187 dev_makeswap=-1
188
189 echo "zram swapoff: OK"
190}
191
192zram_makefs()
193{
194 local i=0
195 for fs in $zram_filesystems; do
196 # if requested fs not supported default it to ext2
197 which mkfs.$fs > /dev/null 2>&1 || fs=ext2
198
199 echo "make $fs filesystem on /dev/zram$i"
200 mkfs.$fs /dev/zram$i > err.log 2>&1
201 if [ $? -ne 0 ]; then
202 cat err.log
203 echo "FAIL failed to make $fs on /dev/zram$i"
204 fi
205 i=$(($i + 1))
206 echo "zram mkfs.$fs: OK"
207 done
208}
209
210zram_mount()
211{
212 local i=0
213 for i in $(seq 0 $(($dev_num - 1))); do
214 echo "mount /dev/zram$i"
215 mkdir zram$i
216 mount /dev/zram$i zram$i > /dev/null || \
217 echo "FAIL mount /dev/zram$i failed"
218 dev_mounted=$i
219 done
220
221 echo "zram mount of zram device(s): OK"
222}