[Pkg-xen-devel] Bug#402974: xen-utils-common: xen domain do not
always shutdown
Kees van Vloten
kvv at chopin.demon.nl
Wed Dec 13 22:33:58 CET 2006
Package: xen-utils-common
Version: 3.0.3-0-2
Severity: normal
Tags: patch
When shutting down xen domains with '/etc/init.d/xendomains stop' most
of the time not all domains are stopped when the script finishes.
As it turns out the xendomains-script queries running domains by
executing 'xm list', this command replies its usage info sometimes
instead of giving proper output. I suspect this happens when xen is
busy (e.g. with shutting down domains).
I have patched xendomains with a wrapper around 'xm list', in order to
retry when it returns 'Usage ...' instead of the normal list of running
domains.
The other thing included in the patch is to allow longer domain names
(up to 40 chars) to be handled properly (solves bug #395305).
--- xendomains.org 2006-11-28 11:45:39.000000000 +0100
+++ xendomains 2006-12-09 01:01:06.000000000 +0100
@@ -1,4 +1,4 @@
-#!/bin/bash -x
+#!/bin/bash
### BEGIN INIT INFO
# Provides: xendomains
# Required-Start: $syslog $remote_fs xend
@@ -128,9 +128,9 @@
parseln()
{
- name=`echo "$1" | cut -c0-17`
+ name=`echo "$1" | cut -c0-40`
name=${name%% *}
- rest=`echo "$1" | cut -c18- `
+ rest=`echo "$1" | cut -c41- `
read id mem cpu vcpu state tm < <(echo "$rest")
}
@@ -204,15 +204,31 @@
fi
}
+xm_list()
+{
+ OK=0
+ while [ $OK -eq 0 ]; do
+ OUT=`xm list`
+ echo "$OUT" | grep -q "^Usage"
+ if [ $? -eq 1 ]; then
+ OK=1
+ else
+ sleep 1s
+ fi
+ done
+ echo "$OUT"
+ return 0
+}
+
all_zombies()
{
while read LN; do
parseln "$LN"
if test $id = 0; then continue; fi
if test "$state" != "-b---d" -a "$state" != "-----d"; then
return 1;
fi
- done < <(xm list | grep -v '^Name')
+ done < <(xm_list | grep -v '^Name')
return 0
}
@@ -316,14 +332,14 @@
echo -n "(shut)"
watchdog_xm shutdown &
WDOG_PID=$!
- xm shutdown $id $XENDOMAINS_SHUTDOWN
+ xm shutdown $id $XENDOMAINS_SHUTDOWN > /dev/null
if test $? -ne 0; then
rc_failed $?
echo -n '!'
fi
kill $WDOG_PIG >/dev/null 2>&1
fi
- done < <(xm list | grep -v '^Name')
+ done < <(xm_list | grep -v '^Name')
# NB. this shuts down ALL Xen domains (politely), not just the ones in
# AUTODIR/*
-- System Information:
Debian Release: 4.0
APT prefers testing
APT policy: (500, 'testing')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-2-xen-k7
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Versions of packages xen-utils-common depends on:
ii lsb-base 3.1-22 Linux Standard Base 3.1
init scrip
ii udev 0.103-1 /dev/ and hotplug
management daemo
xen-utils-common recommends no packages.
-- no debconf information
More information about the Pkg-xen-devel
mailing list