aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabio Erculiani <lxnay@sabayon.org>2011-01-12 00:12:25 +0100
committerFabio Erculiani <lxnay@sabayon.org>2011-01-12 00:12:25 +0100
commit51e0b14044fd2ba27782e2267e99fab49f7a416d (patch)
tree55dffbf1655149912e58e6434165963d69792600 /defaults
parentCheck return codes of cpio (lessen from bug #246370) (diff)
downloadgenkernel-51e0b14044fd2ba27782e2267e99fab49f7a416d.tar.gz
genkernel-51e0b14044fd2ba27782e2267e99fab49f7a416d.tar.bz2
genkernel-51e0b14044fd2ba27782e2267e99fab49f7a416d.zip
slowusb: ease the code in order to reduce entropy, one place for one thing.
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.
Diffstat (limited to 'defaults')
-rwxr-xr-xdefaults/initrd.scripts23
-rwxr-xr-xdefaults/linuxrc14
2 files changed, 17 insertions, 20 deletions
diff --git a/defaults/initrd.scripts b/defaults/initrd.scripts
index f14333a3..4da69684 100755
--- a/defaults/initrd.scripts
+++ b/defaults/initrd.scripts
@@ -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
}
diff --git a/defaults/linuxrc b/defaults/linuxrc
index d8734509..1b2f3c22 100755
--- a/defaults/linuxrc
+++ b/defaults/linuxrc
@@ -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