brintos

brintos / linux-shallow public Read only

0
0
Text · 5.4 KiB · 21ec196 Raw
270 lines · bash
1#!/bin/sh2# SPDX-License-Identifier: GPL-2.0-or-later3# Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved.4#5# Author: Alexey Kodanev <alexey.kodanev@oracle.com>6# Modified: Naresh Kamboju <naresh.kamboju@linaro.org>7 8dev_makeswap=-19dev_mounted=-110dev_start=011dev_end=-112module_load=-113sys_control=-114# Kselftest framework requirement - SKIP code is 4.15ksft_skip=416kernel_version=`uname -r | cut -d'.' -f1,2`17kernel_major=${kernel_version%.*}18kernel_minor=${kernel_version#*.}19 20trap INT21 22check_prereqs()23{24	local msg="skip all tests:"25	local uid=$(id -u)26 27	if [ $uid -ne 0 ]; then28		echo $msg must be run as root >&229		exit $ksft_skip30	fi31}32 33kernel_gte()34{35	major=${1%.*}36	minor=${1#*.}37 38	if [ $kernel_major -gt $major ]; then39		return 040	elif [[ $kernel_major -eq $major && $kernel_minor -ge $minor ]]; then41		return 042	fi43 44	return 145}46 47zram_cleanup()48{49	echo "zram cleanup"50	local i=51	for i in $(seq $dev_start $dev_makeswap); do52		swapoff /dev/zram$i53	done54 55	for i in $(seq $dev_start $dev_mounted); do56		umount /dev/zram$i57	done58 59	for i in $(seq $dev_start $dev_end); do60		echo 1 > /sys/block/zram${i}/reset61		rm -rf zram$i62	done63 64	if [ $sys_control -eq 1 ]; then65		for i in $(seq $dev_start $dev_end); do66			echo $i > /sys/class/zram-control/hot_remove67		done68	fi69 70	if [ $module_load -eq 1 ]; then71		rmmod zram > /dev/null 2>&172	fi73}74 75zram_load()76{77	echo "create '$dev_num' zram device(s)"78 79	# zram module loaded, new kernel80	if [ -d "/sys/class/zram-control" ]; then81		echo "zram modules already loaded, kernel supports" \82			"zram-control interface"83		dev_start=$(ls /dev/zram* | wc -w)84		dev_end=$(($dev_start + $dev_num - 1))85		sys_control=186 87		for i in $(seq $dev_start $dev_end); do88			cat /sys/class/zram-control/hot_add > /dev/null89		done90 91		echo "all zram devices (/dev/zram$dev_start~$dev_end" \92			"successfully created"93		return 094	fi95 96	# detect old kernel or built-in97	modprobe zram num_devices=$dev_num98	if [ ! -d "/sys/class/zram-control" ]; then99		if grep -q '^zram' /proc/modules; then100			rmmod zram > /dev/null 2>&1101			if [ $? -ne 0 ]; then102				echo "zram module is being used on old kernel" \103					"without zram-control interface"104				exit $ksft_skip105			fi106		else107			echo "test needs CONFIG_ZRAM=m on old kernel without" \108				"zram-control interface"109			exit $ksft_skip110		fi111		modprobe zram num_devices=$dev_num112	fi113 114	module_load=1115	dev_end=$(($dev_num - 1))116	echo "all zram devices (/dev/zram0~$dev_end) successfully created"117}118 119zram_max_streams()120{121	echo "set max_comp_streams to zram device(s)"122 123	kernel_gte 4.7124	if [ $? -eq 0 ]; then125		echo "The device attribute max_comp_streams was"\126		               "deprecated in 4.7"127		return 0128	fi129 130	local i=$dev_start131	for max_s in $zram_max_streams; do132		local sys_path="/sys/block/zram${i}/max_comp_streams"133		echo $max_s > $sys_path || \134			echo "FAIL failed to set '$max_s' to $sys_path"135		sleep 1136		local max_streams=$(cat $sys_path)137 138		[ "$max_s" -ne "$max_streams" ] && \139			echo "FAIL can't set max_streams '$max_s', get $max_stream"140 141		i=$(($i + 1))142		echo "$sys_path = '$max_streams'"143	done144 145	echo "zram max streams: OK"146}147 148zram_compress_alg()149{150	echo "test that we can set compression algorithm"151 152	local i=$dev_start153	local algs=$(cat /sys/block/zram${i}/comp_algorithm)154	echo "supported algs: $algs"155 156	for alg in $zram_algs; do157		local sys_path="/sys/block/zram${i}/comp_algorithm"158		echo "$alg" >	$sys_path || \159			echo "FAIL can't set '$alg' to $sys_path"160		i=$(($i + 1))161		echo "$sys_path = '$alg'"162	done163 164	echo "zram set compression algorithm: OK"165}166 167zram_set_disksizes()168{169	echo "set disk size to zram device(s)"170	local i=$dev_start171	for ds in $zram_sizes; do172		local sys_path="/sys/block/zram${i}/disksize"173		echo "$ds" >	$sys_path || \174			echo "FAIL can't set '$ds' to $sys_path"175 176		i=$(($i + 1))177		echo "$sys_path = '$ds'"178	done179 180	echo "zram set disksizes: OK"181}182 183zram_set_memlimit()184{185	echo "set memory limit to zram device(s)"186 187	local i=$dev_start188	for ds in $zram_mem_limits; do189		local sys_path="/sys/block/zram${i}/mem_limit"190		echo "$ds" >	$sys_path || \191			echo "FAIL can't set '$ds' to $sys_path"192 193		i=$(($i + 1))194		echo "$sys_path = '$ds'"195	done196 197	echo "zram set memory limit: OK"198}199 200zram_makeswap()201{202	echo "make swap with zram device(s)"203	local i=$dev_start204	for i in $(seq $dev_start $dev_end); do205		mkswap /dev/zram$i > err.log 2>&1206		if [ $? -ne 0 ]; then207			cat err.log208			echo "FAIL mkswap /dev/zram$1 failed"209		fi210 211		swapon /dev/zram$i > err.log 2>&1212		if [ $? -ne 0 ]; then213			cat err.log214			echo "FAIL swapon /dev/zram$1 failed"215		fi216 217		echo "done with /dev/zram$i"218		dev_makeswap=$i219	done220 221	echo "zram making zram mkswap and swapon: OK"222}223 224zram_swapoff()225{226	local i=227	for i in $(seq $dev_start $dev_end); do228		swapoff /dev/zram$i > err.log 2>&1229		if [ $? -ne 0 ]; then230			cat err.log231			echo "FAIL swapoff /dev/zram$i failed"232		fi233	done234	dev_makeswap=-1235 236	echo "zram swapoff: OK"237}238 239zram_makefs()240{241	local i=$dev_start242	for fs in $zram_filesystems; do243		# if requested fs not supported default it to ext2244		which mkfs.$fs > /dev/null 2>&1 || fs=ext2245 246		echo "make $fs filesystem on /dev/zram$i"247		mkfs.$fs /dev/zram$i > err.log 2>&1248		if [ $? -ne 0 ]; then249			cat err.log250			echo "FAIL failed to make $fs on /dev/zram$i"251		fi252		i=$(($i + 1))253		echo "zram mkfs.$fs: OK"254	done255}256 257zram_mount()258{259	local i=0260	for i in $(seq $dev_start $dev_end); do261		echo "mount /dev/zram$i"262		mkdir zram$i263		mount /dev/zram$i zram$i > /dev/null || \264			echo "FAIL mount /dev/zram$i failed"265		dev_mounted=$i266	done267 268	echo "zram mount of zram device(s): OK"269}270