From ee3dec50a36c175f0eb4f258855de27051bb76ac Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 3 Dec 2015 14:41:49 +0000 Subject: [PATCH] ramdisk: Make usage of ramdisk configurable Signed-off-by: Michael Tremer --- lfs/initscripts | 4 ++-- src/initscripts/init.d/collectd | 4 +--- src/initscripts/init.d/functions | 33 ++++++++++++++++++++++++++++++++ src/initscripts/init.d/vnstat | 2 +- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/lfs/initscripts b/lfs/initscripts index c4e3492215..538ea4d0b7 100755 --- a/lfs/initscripts +++ b/lfs/initscripts @@ -61,8 +61,8 @@ $(TARGET) : -rm -rf /etc/init.d ln -svf rc.d/init.d /etc/init.d - #create ramdiskfile to force ramdiskcreation if FORCE=1 - echo "FORCE=0" > /etc/sysconfig/ramdisk + # Create default ramdisk configuration + echo "RAMDISK_MODE=0" > /etc/sysconfig/ramdisk for i in $(DIR_SRC)/src/initscripts/init.d/*; do \ install -v -m 754 $$i /etc/rc.d/init.d/; \ diff --git a/src/initscripts/init.d/collectd b/src/initscripts/init.d/collectd index 69dc94c6fa..a38b4f17fb 100644 --- a/src/initscripts/init.d/collectd +++ b/src/initscripts/init.d/collectd @@ -1,12 +1,10 @@ #!/bin/sh # Begin $rc_base/init.d/collecd - . /etc/sysconfig/rc . $rc_functions eval $(/usr/local/bin/readhash /var/ipfire/main/settings) -eval $(/usr/local/bin/readhash /etc/sysconfig/ramdisk) if [ "$RRDLOG" = '' ]; then RRDLOG=/var/log/rrd @@ -14,7 +12,7 @@ fi case "$1" in start) - if [ "$FORCE" == '1' ] || [ "$(mem_amount)" -gt "490" ];then + if use_ramdisk; then #mount ramdisk if ! mountpoint $RRDLOG &>/dev/null; then boot_mesg "Mount rrd Ramdisk..." diff --git a/src/initscripts/init.d/functions b/src/initscripts/init.d/functions index 58fdffeb4a..bd2c946e0d 100644 --- a/src/initscripts/init.d/functions +++ b/src/initscripts/init.d/functions @@ -709,6 +709,39 @@ mem_amount() { echo "$(( ${pagesize} * ${pages} / 1024 / 1024 ))" } +use_ramdisk() { + eval $(/usr/local/bin/readhash /etc/sysconfig/ramdisk) + + case "${RAMDISK_MODE}" in + # Don't use ramdisk + 0) + return 1 + ;; + + # Always use ramdisk + 1) + return 0 + ;; + + # Automatic mode - use ramdisk if sufficient + # memory is available + 2) + local mem_avail="$(mem_amount)" + + if [ ${mem_avail} -ge 490 ]; then + return 0 + else + return 1 + fi + ;; + + # Fail for everything else + *) + return 2 + ;; + esac +} + mount_ramdisk() { mount -t tmpfs none $1 } diff --git a/src/initscripts/init.d/vnstat b/src/initscripts/init.d/vnstat index 2e4a87874f..2593afe4db 100755 --- a/src/initscripts/init.d/vnstat +++ b/src/initscripts/init.d/vnstat @@ -12,7 +12,7 @@ fi case "$1" in start) - if [ "$FORCE" == '1' ] || [ "$(mem_amount)" -gt "490" ];then + if use_ramdisk; then if ! mountpoint $VNSTATLOG &>/dev/null; then boot_mesg "Mount vnstat ramdisk..." if [ $(find "$VNSTATLOG" | wc -l) -ne 1 ]; then -- 2.39.2