diff options
author | Emil Muratov <gpm@hotplug.ru> | 2018-08-02 00:18:45 +0300 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2018-12-18 17:22:05 +0100 |
commit | 9a5509736a8e58d294f0d977a619cd8940845453 (patch) | |
tree | 799f986a28c7e89493e8f38ee868e543164a7791 | |
parent | 5ff4ea6bc4d2bff3407e5ec509ff779ccf66782c (diff) | |
download | upstream-9a5509736a8e58d294f0d977a619cd8940845453.tar.gz upstream-9a5509736a8e58d294f0d977a619cd8940845453.tar.bz2 upstream-9a5509736a8e58d294f0d977a619cd8940845453.zip |
zram-swap: fix zram dev reset for multicore cpu devices
* "zram stop" could reset up to $(num_of_cores) zram devices even if
some of those were not mounted as swap dev's. This fix tries to
enumerate mounted swap zram dev's before making a reset
* remove hot-added zram devs on stop (except zram0)
Signed-off-by: Emil Muratov <gpm@hotplug.ru>
(backported from 9edc1fe8abac6638cd05640279bc741a23b8d260)
-rw-r--r-- | package/system/zram-swap/files/zram.init | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/package/system/zram-swap/files/zram.init b/package/system/zram-swap/files/zram.init index 419221b1a3..1eba3f4d98 100644 --- a/package/system/zram-swap/files/zram.init +++ b/package/system/zram-swap/files/zram.init @@ -133,18 +133,16 @@ start() stop() { - local zram_dev proc_entry - - for core in $( list_cpu_idx ); do { - zram_dev="$( zram_dev "$core" )" - proc_entry="/sys/block/$( basename "$zram_dev" )/reset" - - grep -sq ^"$zram_dev " /proc/swaps && { - logger -s -t zram_stop -p daemon.debug "deactivate swap $zram_dev" - swapoff "$zram_dev" - } - - zram_reset "$zram_dev" "claiming memory back" + local zram_dev + + for zram_dev in $( grep zram /proc/swaps |awk '{print $1}' ); do { + logger -s -t zram_stop -p daemon.debug "deactivate swap $zram_dev" + swapoff "$zram_dev" && zram_reset "$zram_dev" "claiming memory back" + local dev_index="$( echo $zram_dev | grep -o "[0-9]*$" )" + if [ $dev_index -ne 0 ]; then + logger -s -t zram_stop -p daemon.debug "removing zram $zram_dev" + echo $dev_index > /sys/class/zram-control/hot_remove + fi } done } |