zram-swap: default to lzo instead of lzo-rle compression
authorRui Salvaterra <rsalvaterra@gmail.com>
Thu, 30 Jul 2020 12:49:18 +0000 (13:49 +0100)
committerJo-Philipp Wich <jo@mein.io>
Thu, 17 Sep 2020 08:29:40 +0000 (10:29 +0200)
On devices with small amounts of RAM, zram-swap fails to initialise due to the
default compression algorithm (lzo-rle). Startup example on an AirGrid M2, with
32 MiB of RAM:

root@airgrid:/etc/config# /etc/init.d/zram start
zram_start: activating '/dev/zram0' for swapping (13 MegaBytes)
zram_reset: enforcing defaults via /sys/block/zram0/reset
sh: write error: Out of memory
mkswap: image is too small
swapon: /dev/zram0: Invalid argument
root@airgrid:/etc/config#

Fix this by defaulting to traditional lzo, which works fine and is always
available.

Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
package/system/zram-swap/files/zram.init

index 42c084855ab68bde04bfef7ff81ab31379be913a..bfb92856008846229f6da9935b7f45e341c5a9d7 100755 (executable)
@@ -85,8 +85,9 @@ zram_comp_algo()
        local dev="$1"
        local zram_comp_algo="$( uci -q get system.@system[0].zram_comp_algo )"
 
-       if [ -z "$zram_comp_algo" ] || [ ! -e /sys/block/$( basename $dev )/comp_algorithm ]; then
-               return 0
+       if [ -z "$zram_comp_algo" ]; then
+               # lzo-rle fails on small RAM devices, default to lzo, which is always available
+               zram_comp_algo="lzo"
        fi
 
        if [ $(grep -c "$zram_comp_algo" /sys/block/$( basename $dev )/comp_algorithm) -ne 0 ]; then