1 #!/bin/bash 1 #!/bin/bash 2 # SPDX-License-Identifier: GPL-2.0-or-later 2 # SPDX-License-Identifier: GPL-2.0-or-later 3 # Copyright (c) 2015 Oracle and/or its affilia 3 # Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved. 4 # 4 # 5 # Test creates several zram devices with diffe 5 # Test creates several zram devices with different filesystems on them. 6 # It fills each device with zeros and checks t 6 # It fills each device with zeros and checks that compression works. 7 # 7 # 8 # Author: Alexey Kodanev <alexey.kodanev@oracle 8 # Author: Alexey Kodanev <alexey.kodanev@oracle.com> 9 # Modified: Naresh Kamboju <naresh.kamboju@lina 9 # Modified: Naresh Kamboju <naresh.kamboju@linaro.org> 10 10 11 TCID="zram01" 11 TCID="zram01" 12 ERR_CODE=0 12 ERR_CODE=0 13 13 14 . ./zram_lib.sh 14 . ./zram_lib.sh 15 15 16 # Test will create the following number of zra 16 # Test will create the following number of zram devices: 17 dev_num=1 17 dev_num=1 18 # This is a list of parameters for zram device 18 # This is a list of parameters for zram devices. 19 # Number of items must be equal to 'dev_num' p 19 # Number of items must be equal to 'dev_num' parameter. 20 zram_max_streams="2" 20 zram_max_streams="2" 21 21 22 # The zram sysfs node 'disksize' value can be 22 # The zram sysfs node 'disksize' value can be either in bytes, 23 # or you can use mem suffixes. But in some old 23 # or you can use mem suffixes. But in some old kernels, mem 24 # suffixes are not supported, for example, in 24 # suffixes are not supported, for example, in RHEL6.6GA's kernel 25 # layer, it uses strict_strtoull() to parse di 25 # layer, it uses strict_strtoull() to parse disksize which does 26 # not support mem suffixes, in some newer kern 26 # not support mem suffixes, in some newer kernels, they use 27 # memparse() which supports mem suffixes. So h 27 # memparse() which supports mem suffixes. So here we just use 28 # bytes to make sure everything works correctl 28 # bytes to make sure everything works correctly. 29 zram_sizes="2097152" # 2MB 29 zram_sizes="2097152" # 2MB 30 zram_mem_limits="2M" 30 zram_mem_limits="2M" 31 zram_filesystems="ext4" 31 zram_filesystems="ext4" 32 zram_algs="lzo" 32 zram_algs="lzo" 33 33 34 zram_fill_fs() 34 zram_fill_fs() 35 { 35 { 36 for i in $(seq $dev_start $dev_end); d 36 for i in $(seq $dev_start $dev_end); do 37 echo "fill zram$i..." 37 echo "fill zram$i..." 38 local b=0 38 local b=0 39 while [ true ]; do 39 while [ true ]; do 40 dd conv=notrunc if=/de 40 dd conv=notrunc if=/dev/zero of=zram${i}/file \ 41 oflag=append c 41 oflag=append count=1 bs=1024 status=none \ 42 > /dev/null 2> 42 > /dev/null 2>&1 || break 43 b=$(($b + 1)) 43 b=$(($b + 1)) 44 done 44 done 45 echo "zram$i can be filled wit 45 echo "zram$i can be filled with '$b' KB" 46 46 47 local mem_used_total=`awk '{pr 47 local mem_used_total=`awk '{print $3}' "/sys/block/zram$i/mm_stat"` 48 local v=$((100 * 1024 * $b / $ 48 local v=$((100 * 1024 * $b / $mem_used_total)) 49 if [ "$v" -lt 100 ]; then 49 if [ "$v" -lt 100 ]; then 50 echo "FAIL compressio 50 echo "FAIL compression ratio: 0.$v:1" 51 ERR_CODE=-1 51 ERR_CODE=-1 52 return 52 return 53 fi 53 fi 54 54 55 echo "zram compression ratio: 55 echo "zram compression ratio: $(echo "scale=2; $v / 100 " | bc):1: OK" 56 done 56 done 57 } 57 } 58 58 59 check_prereqs 59 check_prereqs 60 zram_load 60 zram_load 61 zram_max_streams 61 zram_max_streams 62 zram_compress_alg 62 zram_compress_alg 63 zram_set_disksizes 63 zram_set_disksizes 64 zram_set_memlimit 64 zram_set_memlimit 65 zram_makefs 65 zram_makefs 66 zram_mount 66 zram_mount 67 67 68 zram_fill_fs 68 zram_fill_fs 69 zram_cleanup 69 zram_cleanup 70 70 71 if [ $ERR_CODE -ne 0 ]; then 71 if [ $ERR_CODE -ne 0 ]; then 72 echo "$TCID : [FAIL]" 72 echo "$TCID : [FAIL]" 73 else 73 else 74 echo "$TCID : [PASS]" 74 echo "$TCID : [PASS]" 75 fi 75 fi
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.