From 1b5afe8f464bae8fa38317548ec95fe303334c0d Mon Sep 17 00:00:00 2001 From: Sebastian Moeller Date: Thu, 5 Mar 2015 10:42:26 +0100 Subject: [PATCH] sqm-scripts: make run.sh ignore spurious incomplete hotplug ifups 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 --- net/sqm-scripts/Makefile | 2 +- net/sqm-scripts/files/etc/hotplug.d/iface/11-sqm | 4 ---- net/sqm-scripts/files/usr/lib/sqm/run.sh | 10 +++++++++- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/net/sqm-scripts/Makefile b/net/sqm-scripts/Makefile index 25c964bad..79112227d 100644 --- a/net/sqm-scripts/Makefile +++ b/net/sqm-scripts/Makefile @@ -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) diff --git a/net/sqm-scripts/files/etc/hotplug.d/iface/11-sqm b/net/sqm-scripts/files/etc/hotplug.d/iface/11-sqm index 9543acd76..99796021d 100755 --- a/net/sqm-scripts/files/etc/hotplug.d/iface/11-sqm +++ b/net/sqm-scripts/files/etc/hotplug.d/iface/11-sqm @@ -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} - diff --git a/net/sqm-scripts/files/usr/lib/sqm/run.sh b/net/sqm-scripts/files/usr/lib/sqm/run.sh index 8995213d7..968292bcd 100755 --- a/net/sqm-scripts/files/usr/lib/sqm/run.sh +++ b/net/sqm-scripts/files/usr/lib/sqm/run.sh @@ -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}; } }