[Pkg-libvirt-maintainers] Bug#523712: libvirt-bin init script exits with failure status after starting
Chip Salzenberg
chip at pobox.com
Mon Apr 13 17:33:26 UTC 2009
On Mon, Apr 13, 2009 at 05:38:18PM +0200, Guido Günther wrote:
> On Sun, Apr 12, 2009 at 01:46:31PM -0700, Chip Salzenberg wrote:
> > On Sun, Apr 12, 2009 at 09:31:25PM +0200, Guido Günther wrote:
> > > On Sat, Apr 11, 2009 at 07:52:18PM -0700, Chip Salzenberg wrote:
> > > > Package: libvirt-bin
> > > > Version: 0.6.2-1
> > > > Severity: important
> > > >
> > > > '/etc/init.d/libvirt-bin start' actually works but exits with non-zero status.
> > > > The output looks odd, as well: it prints both "OK" *and* "fail":
> > > >
> > > > # /etc/init.d/libvirt-bin start
> > > > * Starting libvirt management daemon libvirtd [ OK ]
> > > > [fail]
> > > >
> > > > that's how it looks
> > > Please do some dash -x debugging. It looks sane here:
> > >
> > > $ sudo /etc/init.d/libvirt-bin start
> > > Starting libvirt management daemon: libvirtd.
> > > $ echo $?
> > > 0
> >
> > Here you go. Looks like something wrong with splashy integration.
> Seems as log_end_msg 0 doesn't return 0 and we end up calling
> log_end_msg 1 therefore. Does the attached version do any better? If so
> it's a problem with the splashy integration.
No change. Can you help with filing the splashy bug? I don't understand
what's not working.
> Cheers,
> -- Guido
> #! /bin/sh
> #
> # Init skript for libvirtd
> #
> # (c) 2007 Guido Guenther <agx at sigxcpu.org>
> # based on the skeletons that comes with dh_make
> #
> ### BEGIN INIT INFO
> # Provides: libvirtd
> # Required-Start: $network $local_fs
> # Required-Stop:
> # Should-Start: hal
> # Default-Start: 2 3 4 5
> # Default-Stop: 0 1 6
> # Short-Description: libvirt management daemon
> ### END INIT INFO
>
> PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
> DAEMON=/usr/sbin/libvirtd
> NAME=libvirtd
> DESC="libvirt management daemon"
>
> test -x $DAEMON || exit 0
> . /lib/lsb/init-functions
>
> PIDFILE=/var/run/$NAME.pid
> DODTIME=1 # Time to wait for the server to die, in seconds
>
> # Include libvirtd defaults if available
> if [ -f /etc/default/libvirt-bin ] ; then
> . /etc/default/libvirt-bin
> fi
>
> set -e
>
> check_start_libvirtd_option() {
> if [ ! "$start_libvirtd" = "yes" ]; then
> log_warning_msg "Not starting libvirt management daemon libvirtd, disabled via /etc/default/libvirt-bin"
> return 1
> else
> return 0
> fi
> }
>
> running_pid()
> {
> # Check if a given process pid's cmdline matches a given name
> pid=$1
> name=$2
> [ -z "$pid" ] && return 1
> [ ! -d /proc/$pid ] && return 1
> cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
> # Is this the expected child?
> [ "$cmd" != "$name" ] && return 1
> return 0
> }
>
> running()
> {
> # Check if the process is running looking at /proc
> # (works for all users)
> # No pidfile, probably no daemon present
> [ ! -f "$PIDFILE" ] && return 1
> # Obtain the pid and check it against the binary name
> pid=`cat $PIDFILE`
> running_pid $pid $DAEMON || return 1
> return 0
> }
>
> force_stop() {
> # Forcefully kill the process
> [ ! -f "$PIDFILE" ] && return
> if running ; then
> kill -15 $pid
> # Is it really dead?
> [ -n "$DODTIME" ] && sleep "$DODTIME"s
> if running ; then
> kill -9 $pid
> [ -n "$DODTIME" ] && sleep "$DODTIME"s
> if running ; then
> echo "Cannot kill $LABEL (pid=$pid)!"
> exit 1
> fi
> fi
> fi
> rm -f $PIDFILE
> return 0
> }
>
> mkdir -p /var/run/libvirt
> case "$1" in
> start)
> if check_start_libvirtd_option; then
> log_daemon_msg "Starting $DESC" "$NAME"
> if running ; then
> log_progress_msg "already running"
> log_end_msg 0
> exit 0
> fi
> rm -f /var/run/libvirtd.pid
> start-stop-daemon --start --quiet --pidfile $PIDFILE \
> --exec $DAEMON -- $libvirtd_opts
> if running; then
> log_end_msg 0
> else
> log_end_msg 1
> fi
> fi
> ;;
> stop)
> log_daemon_msg "Stopping $DESC" "$NAME"
> if ! running ; then
> log_progress_msg "not running"
> log_end_msg 0
> exit 0
> fi
> start-stop-daemon --stop --quiet --pidfile $PIDFILE \
> --exec $DAEMON
> log_end_msg 0
> ;;
> force-stop)
> log_daemon_msg "Forcefully stopping $DESC" "$NAME"
> force_stop
> ! running && log_end_msg 0 || log_end_msg 1
> ;;
> restart)
> if check_start_libvirtd_option; then
> log_daemon_msg "Restarting $DESC" "$DAEMON"
> start-stop-daemon --oknodo --stop --quiet --pidfile \
> /var/run/$NAME.pid --exec $DAEMON
> [ -n "$DODTIME" ] && sleep $DODTIME
> start-stop-daemon --start --quiet --pidfile \
> /var/run/$NAME.pid --exec $DAEMON -- $libvirtd_opts
> running && log_end_msg 0 || log_end_msg 1
> fi
> ;;
> reload|force-reload)
> if running; then
> log_daemon_msg "Reloading configuration of $DESC" "$NAME"
> start-stop-daemon --stop --signal 1 --quiet --pidfile \
> /var/run/$NAME.pid --exec $DAEMON
> log_end_msg 0
> else
> log_warning_msg "libvirtd not running, doing nothing."
> fi
> ;;
> status)
> log_daemon_msg "Checking status of $DESC" "$NAME"
> if running ; then
> log_progress_msg "running"
> log_end_msg 0
> else
> log_progress_msg "not running"
> log_end_msg 1
> fi
> ;;
> *)
> N=/etc/init.d/libvirt-bin
> echo "Usage: $N {start|stop|restart|reload|force-reload|status|force-stop}" >&2
> exit 1
> ;;
> esac
>
> exit 0
--
Chip Salzenberg
More information about the Pkg-libvirt-maintainers
mailing list