Bryan Kadzban wrote:


I didn't do any testing regarding changing the timeout used by the
wait_for_uevents function, either.

Nor did I.  But I haven't seen the bugs since the loop went in either.
I need to rebuild with all modules and see if I can trip it up with USB
storage.


But udevtrigger is pretty much a drop-in replacement for walk_sysfs.


It appears so.  walk_sysfs and wait_for_uevets functions removed.
Please see the attached replacement script. Can you replace and report back please? Will put up a new tarball after I test with a modular
kernel.

TIA

-- DJ Lucas

#!/bin/sh
########################################################################
# Begin $rc_base/init.d/udev
#
# Description : Udev cold-plugging script
#
# Authors     : Zack Winkles
#
# Version     : 00.01
#
# Notes       :
#
########################################################################

. /etc/sysconfig/rc
. ${rc_functions}

case "${1}" in
        start)
                boot_mesg "Populating /dev with device nodes..."
                if ! grep -q '[[:space:]]sysfs' /proc/mounts; then
                        echo_failure
                        boot_mesg -n "FAILURE:\n\nUnable to create" ${FAILURE}
                        boot_mesg -n " devices without a SysFS filesystem"
                        boot_mesg -n "\n\nAfter you press Enter, this system"
                        boot_mesg -n " will be halted and powered off."
                        boot_mesg -n "\n\nPress Enter to continue..." ${INFO}
                        boot_mesg "" ${NORMAL}
                        read ENTER
                        /etc/rc.d/init.d/halt stop
                fi

                # Mount a temporary file system over /dev, so that any devices
                # made or removed during this boot don't affect the next one.
                # The reason we don't write to mtab is because we don't ever
                # want /dev to be unavailable (such as by `umount -a').
                mount -n -t tmpfs tmpfs /dev -o mode=755
                if [ ${?} != 0 ]; then
                        echo_failure
                        boot_mesg -n "FAILURE:\n\nCannot mount a tmpfs" 
${FAILURE}
                        boot_mesg -n " onto /dev, this system will be halted."
                        boot_mesg -n "\n\nAfter you press Enter, this system"
                        boot_mesg -n " will be halted and powered off."
                        boot_mesg -n "\n\nPress Enter to continue..." ${INFO}
                        boot_mesg "" ${NORMAL}
                        read ENTER
                        /etc/rc.d/init.d/halt stop
                fi

                # Udev handles hotplug events itself, so we don't need to have
                # the kernel call out to any binary in response to hotplug
                # events
                echo > /proc/sys/kernel/hotplug

                # Copy static device nodes to /dev
                cp -ar /lib/udev/devices/* /dev

                # Start the udev daemon to continually watch for, and act on,
                # hotplug events
                /sbin/udevd --daemon

                # Now traverse /sys in order to "coldplug" devices that have
                # already been discovered
                mkdir -p /dev/.udev/queue
                /sbin/udevtrigger

                # until we know how to do better, just wait for _all_ events 
                #to finish
                loop=300
                confirm=0
                while true ; do
                        sleep 0.1
                        test -d /dev/.udev/queue && confirm=0 || \
                        confirm=$(( $confirm + 1 ))
                        loop=$(( $loop - 1 ))
                        test $loop -gt 0 || break
                        test $confirm -lt 60 || break
                done
                > /dev/bug
                test "$loop" -gt 0
                failed="${?}"
                sleep 6
                if test -s /dev/bug; then
                        mv /dev/bug /dev/bugreport
                        failed="1"
                else
                        rm -f /dev/bug
                fi
                (exit "${failed}")
                evaluate_retval

                if [ "${failed}" -ne "0" ]; then
                        boot_mesg "Please paste the /dev/bugreport file to" 
${FAILURE}
                        boot_mesg 
"http://wiki.linuxfromscratch.org/lfs/ticket/1720";
                        boot_mesg "Otherwise, the next version of LFS may be 
unbootable on your system!"
                        echo_failure
                        sleep 10
                        return 1
                fi

                ;;

        *)
                echo "Usage ${0} {start}"
                exit 1
                ;;
esac

# End $rc_base/init.d/udev
-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to