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