sqm-scripts: make run.sh ignore spurious incomplete hotplug ifups
authorSebastian Moeller <moeller0@gmx.de>
Thu, 5 Mar 2015 09:42:26 +0000 (10:42 +0100)
committerToke Høiland-Jørgensen <toke@toke.dk>
Thu, 5 Mar 2015 15:23:42 +0000 (16:23 +0100)
During system start up pppoe devices seem to receice ifup events before
the interface actually exists. This commit makes sqm's run.sh script
test whether the sys files for an interface exist before actually trying
to start an SQM instance on an interface. This seems to nicely avoid
starting on an not fully established pppoe interface and avoids a number
of error messages during startup.

In addition, debug logging is disabled.

Signed-off-by: Sebastian Moeller <moeller0@gmx.de>
net/sqm-scripts/Makefile
net/sqm-scripts/files/etc/hotplug.d/iface/11-sqm
net/sqm-scripts/files/usr/lib/sqm/run.sh

index 25c964bad9b34f0ce5e37b7ae1123dfe9371020a..79112227dec38adaf903e3dccc26a49fd33e8c10 100644 (file)
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=sqm-scripts
 PKG_VERSION:=8
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_LICENSE:=GPLv2
 
 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
index 9543acd763760e6b994a48d8723c392405095720..99796021d944e2afc5c701e69846afa10637d645 100755 (executable)
@@ -1,7 +1,3 @@
 #!/bin/sh
 
-# teach SQM to re-enable itself when an interface re-appears
-logger -t SQM -s "hotplug on interface: ${DEVICE} action: ${ACTION}"
-
 [ "$ACTION" = ifup ] && /usr/lib/sqm/run.sh interface ${DEVICE}
-
index 8995213d76a17d9bb4e8b57cfc6e714ab01f353a..968292bcd37061edfa0cf8e593e7b7ac53f16224 100755 (executable)
@@ -23,7 +23,7 @@ case ${1} in
         ;;
     interface)
        START_ON_IF=$2  # only process this interface
-       logger -t SQM -s "Re/starting sqm on interface ${START_ON_IF}"
+       logger -t SQM -s "Trying to re-start SQM on interface ${START_ON_IF}"
        # TODO if $2 is empty just bail...
        if [ -z ${START_ON_IF} ] ;
        then
@@ -108,6 +108,14 @@ run_simple_qos() {
             logger -t SQM -s "${0} SQM qdiscs on ${IFACE} removed"
             return 0
        fi
+       # in case of spurious hotplug events, try double check whether the interface is really up
+       if [ ! -d /sys/class/net/${IFACE} ] ;
+       then
+           echo "${IFACE} does currently not exist, not even trying to start SQM on nothing." > /dev/kmsg
+           logger -t SQM -s "${IFACE} does currently not exist, not even trying to start SQM on nothing."
+           return 0
+       fi
+
        logger -t SQM -s "${0} Queue Setup Script: ${SCRIPT}"
        [ -x "$SCRIPT" ] && { $SCRIPT ; touch ${ACTIVE_STATE_FILE_FQN}; }
 }