Subject: Re: "fixing" the network shutdown problems with rc.d
To: None <tech-userlevel@netbsd.org>
From: Simon Burge <simonb@netbsd.org>
List: tech-userlevel
Date: 04/11/2000 16:20:21
Greg A. Woods wrote:
> [ On Tuesday, April 11, 2000 at 10:37:14 (+1000), Robert Elz wrote: ]
> > Subject: Re: "fixing" the network shutdown problems with rc.d
> >
> > Maybe instead of rc.shutdown running the scripts with a "stop" arg
> > it could run them with "shutdown", then just the few scripts
> > (databases and the link) that actually need to do something at
> > system shutdown time can have a "shutdown" case, and all the rest
> > can just no nothing...
>
> Yes, I like this idea best. It's closest to the previous behaviour
> too (i.e. with the previous incantation of /etc/rc.shutdown[.local]).
<AOL>Me too!</AOL>. So how does this look then? I've changed xdm
because it was in the old /etc/rc.shutdown, and it's also an example
of how to do it. Whether or not it should be smarter like the old
/etc/rc.shutdown is something we can debate afterwards :)
Simon.
--
Index: rc.shutdown
===================================================================
RCS file: /cvsroot/basesrc/etc/rc.shutdown,v
retrieving revision 1.3
diff -p -u -r1.3 rc.shutdown
--- rc.shutdown 2000/03/10 13:17:25 1.3
+++ rc.shutdown 2000/04/11 06:19:28
@@ -31,7 +31,7 @@ done
files=$nfiles
for i in $files; do
- run_rc_script $i stop
+ run_rc_script $i shutdown
done
date
Index: rc.subr
===================================================================
RCS file: /cvsroot/basesrc/etc/rc.subr,v
retrieving revision 1.11
diff -p -u -r1.11 rc.subr
--- rc.subr 2000/03/10 11:39:27 1.11
+++ rc.subr 2000/04/11 06:19:28
@@ -155,8 +155,8 @@ check_process()
#
# run_rc_command arg [supported_args]
-# Scan supported_args (which has "start stop restart rcvar status"
-# prepended) for arg.
+# Scan supported_args (which has "start stop restart rcvar status
+# shutdown" prepended) for arg.
# If there's a match, run ${arg}_cmd or the default command (see below).
#
# If arg has a given prefix, then:
@@ -216,6 +216,7 @@ check_process()
# else
# kill $sig_stop `check_process $command`
# $sig_stop defaults to TERM.
+# shutdown Nothing.
# reload As stop, except use $sig_reload instead.
# $sig_reload defaults to HUP.
# restart Run `stop' then `start'.
@@ -244,7 +245,7 @@ run_rc_command()
;;
esac
- _keywords="start stop restart rcvar $*"
+ _keywords="start stop restart rcvar shutdown $*"
_pidcmd=
if [ -z "$_rc_fast_run" ]; then
if [ -n "$pidfile" ]; then
@@ -346,6 +347,10 @@ run_rc_command()
eval $_precmd || return 1
echo "Stopping ${name}."
kill -${sig_stop:-TERM} $_pid
+ ;;
+
+ shutdown)
+ # ignored
;;
reload)
Index: rc.d/xdm
===================================================================
RCS file: /cvsroot/basesrc/etc/rc.d/xdm,v
retrieving revision 1.2
diff -p -u -r1.2 xdm
--- xdm 2000/03/13 04:04:10 1.2
+++ xdm 2000/04/11 06:19:28
@@ -14,4 +14,11 @@ command="/usr/X11R6/bin/${name}"
pidfile="/var/run/${name}.pid"
required_files="/usr/X11R6/lib/X11/xdm/xdm-config"
+shutdown_cmd="xdm_shutdown"
+
+xdm_shutdown()
+{
+ run_rc_command stop
+}
+
run_rc_command "$1" "reload"