Integrate migrate-run into bootmisc

The migrate-run service was hanging when parallel startup was enabled
because of its dependencies. This integrates the logic for this service
into bootmisc, which will avoid the issues with parallel startup.

I would like to thank Robin H. Johnson <robbat2@gentoo.org> for his
input on this patch
This commit is contained in:
William Hubbs 2011-11-30 10:00:44 -06:00
parent b628481701
commit 5adb3930c7
4 changed files with 37 additions and 41 deletions

View File

@ -22,7 +22,7 @@ SRCS-FreeBSD+= adjkerntz.in devd.in dumpon.in ipfw.in mixer.in nscd.in \
NET_LO-Linux= net.lo NET_LO-Linux= net.lo
SRCS-Linux= devfs.in dmesg.in hwclock.in consolefont.in keymaps.in \ SRCS-Linux= devfs.in dmesg.in hwclock.in consolefont.in keymaps.in \
killprocs.in modules.in mount-ro.in mtab.in numlock.in \ killprocs.in modules.in mount-ro.in mtab.in numlock.in \
procfs.in sysfs.in termencoding.in migrate-run.in procfs.in sysfs.in termencoding.in
NET_LO-NetBSD= net.lo0 NET_LO-NetBSD= net.lo0
# Generic BSD scripts # Generic BSD scripts

View File

@ -72,6 +72,26 @@ mkutmp()
chmod 0664 "$1" chmod 0664 "$1"
} }
migrate_to_run()
{
src="$1"
dst="$2"
if [ -L $src -a "$(readlink -f $src)" != $dst ]; then
ewarn "$src does not point to $dst."
ewarn "Setting $src to point to $dst."
rm $src
elif [ ! -L $src -a -d $src ]; then
ebegin "Migrating $src to $dst"
cp -a $src/* $dst/
rm -rf $src
eend $?
fi
# If $src doesn't exist at all, just run this
if [ ! -e $src ]; then
ln -s $dst $src
fi
}
start() start()
{ {
# Remove any added console dirs # Remove any added console dirs
@ -79,8 +99,16 @@ start()
local logw=false runw=false extra= local logw=false runw=false extra=
# Ensure that our basic dirs exist # Ensure that our basic dirs exist
[ "$RC_UNAME" = Linux ] && extra=/var/lib/misc # Satisfy Linux FHS if [ "$RC_UNAME" = Linux ]; then
for x in /var/log /var/run /tmp $extra; do # Satisfy Linux FHS
extra=/var/lib/misc
if [ ! -d /run ]; then
extra="/var/run $extra"
fi
else
extra=/var/run
fi
for x in /var/log /tmp $extra; do
if ! [ -d $x ]; then if ! [ -d $x ]; then
if ! mkdir -p $x; then if ! mkdir -p $x; then
eend 1 "failed to create needed directory $x" eend 1 "failed to create needed directory $x"
@ -89,6 +117,11 @@ start()
fi fi
done done
if [ "$RC_UNAME" = Linux -a -d /run ]; then
migrate_to_run /var/lock /run/lock
migrate_to_run /var/run /run
fi
if dir_writable /var/run; then if dir_writable /var/run; then
ebegin "Creating user login records" ebegin "Creating user login records"
local xtra= local xtra=

View File

@ -1,37 +0,0 @@
#!@PREFIX@/sbin/runscript
# Copyright 1999-2011 Gentoo Foundation
# Released under the 2-clause BSD license.
description="Migrate /var/run and /var/lock to /run"
depend()
{
before *
after localmount
}
start()
{
einfo "starting $RC_SVCNAME"
return 0
}
stop()
{
einfo "completing /var/run and /var/lock migration."
if [ -d /run ]; then
if [ ! -L /var/lock ]; then
ebegin "Migrating /var/lock to /run"
rm -rf /var/lock
ln -s /run/lock /var/lock
eend 0
fi
if [ ! -L /var/run ]; then
ebegin "Migrating /var/run to /run"
rm -rf /var/run
ln -s /run /var/run
eend 0
fi
fi
return 0
}

View File

@ -26,7 +26,7 @@ BOOT-FreeBSD= hostid net.lo0 newsyslog savecore syslogd
# FreeBSD specific stuff # FreeBSD specific stuff
BOOT-FreeBSD+= adjkerntz dumpon syscons BOOT-FreeBSD+= adjkerntz dumpon syscons
BOOT-Linux= hwclock keymaps modules mtab net.lo procfs termencoding migrate-run BOOT-Linux= hwclock keymaps modules mtab net.lo procfs termencoding
SHUTDOWN-Linux= killprocs mount-ro SHUTDOWN-Linux= killprocs mount-ro
SYSINIT-Linux= devfs dmesg SYSINIT-Linux= devfs dmesg