Wow, this bug drove me nuts when I was doing some unrelated reboots yesterday.
That whole function seems kind of strange to me (making a directory to pass state from one part of the function to another...?). Here's a patch that makes the function seem cleaner to me, if anybody wants it. -Corey
Index: debian/src/initscripts/etc/network/if-up.d/mountnfs =================================================================== --- debian/src/initscripts/etc/network/if-up.d/mountnfs (revision 1966) +++ debian/src/initscripts/etc/network/if-up.d/mountnfs (working copy) @@ -117,20 +117,15 @@ } exit_unless_last_interface() { - grep "^[:space:]*auto" /etc/network/interfaces | \ - sed -e 's/[ \t]*auto[ \t]*//;s/[ \t]*$//;s/[ \t]/\n/g' | \ - while read i; do - if [ `grep -c $i /etc/network/run/ifstate` -eq "0" ]; then + ifaces="$(grep "^[[:space:]]*auto" /etc/network/interfaces | \ + sed -e 's/[ \t]*auto[ \t]*//;s/[ \t]*$//;s/[ \t]/\n/g')" + for i in $ifaces ; do + if grep -q $i /etc/network/run/ifstate ; then msg="if-up.d/mountnfs[$IFACE]: waiting for interface $i before doing NFS mounts" log_warning_msg "$msg" - # Can not pass this as a variable because of the while subshell - mkdir /var/run/network/mountnfs_earlyexit 2> /dev/null + exit 0 fi done - if [ -d /var/run/network/mountnfs_earlyexit ]; then - rmdir /var/run/network/mountnfs_earlyexit 2>/dev/null - exit 0 - fi } # Using 'no !=' instead of 'yes =' to make sure async nfs mounting is