slowusb: ease the code in order to reduce entropy, one place for one thing.
authorFabio Erculiani <lxnay@sabayon.org>
Tue, 11 Jan 2011 23:12:25 +0000 (00:12 +0100)
committerFabio Erculiani <lxnay@sabayon.org>
Tue, 11 Jan 2011 23:12:25 +0000 (00:12 +0100)
There were several places where a mixture of sdelay and "sleep 10"
were called without worrying too much, resulting in slower boot
time, mainly. This commit should fix the mess and make some order
in the slowusb saga.

defaults/initrd.scripts
defaults/linuxrc

index f14333a35fc7c374beb8a92e561e755e09449a4e..4da6968492db40af3fc99875ca6f2db8e5a29a8e 100755 (executable)
@@ -410,17 +410,23 @@ setup_hotplug() {
        fi
 }
 
-check_slowusb() {
+setup_slowusb() {
+       # slowusb already set?
+       if [ "${DO_slowusb}" = "1" ]
+       then
+               return
+       fi
+
        local usb_storage_dir="/sys/bus/usb/drivers/usb-storage"
        if [ ! -d "${usb_storage_dir}" ]
        then
+               # no automated slowusb required. no usb-storage devices attached.
                return
        fi
-       [ "${DO_slowusb}" ] || \
        for x in "${usb_storage_dir}"/*
        do
                [ -d "${x}" ]  && [ "${x}" != "${usb_storage_dir}/module" ] \
-                       && { FORCE_slowusb="1" ; break ; }
+                       && { DO_slowusb="1" ; break ; }
        done
 }
 
@@ -428,13 +434,8 @@ start_dev_mgr() {
        if [ "${KV_2_6_OR_GREATER}" ]
        then
                cd /sys
-               [ "${DO_slowusb}" ] && sdelay
-               check_slowusb
-               [ "${FORCE_slowusb}" ] && sdelay
                good_msg 'Activating mdev'
                runmdev
-               [ "${DO_slowusb}" ] || \
-               [ "${FORCE_slowusb}" ] && sdelay
                cd /
        fi
 }
@@ -881,12 +882,12 @@ startLUKS() {
 
 sdelay() {
        # Sleep a specific number of seconds if SDELAY is set otherwise only sleep
-       # 1 second
-       if [ -n "${SDELAY}" ]
+       # 3 seconds, which is a much better default than 1 second (previous default)
+       if [ "${SDELAY}" ]
        then
                sleep ${SDELAY}
        else
-               sleep 1
+               sleep 3
        fi
 }
 
index d87345092a1c7f026a34a2f1c911158703e9619a..1b2f3c220029e064e94dee90f24a9740ede7b318 100755 (executable)
@@ -289,6 +289,11 @@ fi
 # Delay if needed for USB hardware
 sdelay
 
+# Setup slow USB bits
+setup_slowusb
+# if doslowusb is passed, pause other 10 seconds
+[ "${DO_slowusb}" ] && sleep 10
+
 # Start device manager
 start_dev_mgr
 
@@ -675,10 +680,6 @@ then
                fi
        done
 
-       if [ "${DO_slowusb}" ] || [ "${FORCE_slowusb}" ]
-       then
-               sleep 10
-       fi
        mkdir initramfs proc tmp sys 2>/dev/null
        chmod 1777 tmp
 
@@ -694,11 +695,6 @@ then
        # Let Init scripts know that we booted from CD
        export CDBOOT
        CDBOOT=1
-       check_slowusb
-       if [ "${DO_slowusb}" ] || [ "${FORCE_slowusb}" ]
-       then
-               sleep 10
-       fi
 else
        if [ "${USE_UNIONFS_NORMAL}" = '1' ]
        then