[LTP] [PATCH v4 2/4] zram/zram_lib.sh: adapt the situation that zram device is being used

Petr Vorel pvorel@suse.cz
Fri Dec 17 11:34:46 CET 2021


Hi Xu,

> >> If zram-generator package is installed and works, then we can not remove zram module
> >> because zram swap is being used. This case needs a clean zram environment, change this
> >> test by using hot_add/hot_remove interface[1]. So even zram device is being used, we
> >> still can add zram device and remove them in cleanup.

> > BTW this was added in v4.2-rc1 (6 years ago, 6566d1a32bf7 ("zram: add dynamic
> > device add/remove functionality")). Hopefully anybody still supporting older
> > kernels is using old LTP for it.
> Oh, I don't realize it before. I tested it on centos7 then I think this 
> control interface maybe introduced long time ago.

> To be honst, I don't want to make this case more complex. How about 
> adding  /sys/class/zram-control check after load zram module. If not, 
> just report  case needs to use hot_add/hot_remove interface .

Would it work something like this?

ZRAM_SYSCTL_KERNEL_VERSION="4.2"
...
zram_cleanup()
{
...
	if tst_kvcmp -lt $ZRAM_SYSCTL_KERNEL_VERSION; then
		for i in $(seq $dev_start $dev_end); do
			echo $i > /sys/class/zram-control/hot_remove
		done
	fi

zram_load()
{
...
	if [ ! -d "/sys/class/zram-control" ]; then
		modprobe zram num_devices=$dev_num
		module_load=1
		dev_start=0
		dev_end=$(($dev_num - 1))
		tst_res TPASS "all zram devices(/dev/zram0~$dev_end) successfully created"
		return
	fi

	tst_kvcmp -lt $ZRAM_SYSCTL_KERNEL_VERSION && \
		tst_brk TCONF "test requires kernel $ZRAM_SYSCTL_KERNEL_VERSION+"

	dev_start=$(ls /dev/zram* | wc -w)
	dev_end=$(($dev_start + $dev_num - 1))

	for i in $(seq  $dev_start $dev_end); do
		cat /sys/class/zram-control/hot_add > /dev/null
	done

Kind regards,
Petr


More information about the ltp mailing list