Lines 36-45
Link Here
|
36 |
} |
36 |
} |
37 |
|
37 |
|
38 |
stop() { |
38 |
stop() { |
39 |
if [ "$(xm list | wc -l)" -gt 2 ]; then |
39 |
if [ "$(xm list 2>/dev/null | wc -l)" -gt 2 ]; then |
40 |
ebegin " Stopping all domains" |
40 |
ebegin "Stopping all Xen domains" |
41 |
/usr/sbin/xm shutdown --all --wait >/dev/null |
41 |
/usr/sbin/xm shutdown --all >/dev/null |
42 |
eend $? |
42 |
|
|
|
43 |
#Poll for shutdown |
44 |
WAIT=30 |
45 |
while [ "$(xm list 2>/dev/null | wc -l)" -gt 2 -a $WAIT -gt 0 ]; do |
46 |
sleep 1 |
47 |
WAIT=$((WAIT-1)) |
48 |
done |
49 |
|
50 |
if [ $WAIT -gt 0 ]; then |
51 |
eend 0 |
52 |
else |
53 |
#Kill remaining stragglers, otherwise whole machine (dom0) has to be killed |
54 |
eend 1 |
55 |
eindent |
56 |
ewarn "Some domains refuse to shutdown, killing the stragglers" |
57 |
xm list -l | grep '\(name [^\)]*\)' | while read D ; do |
58 |
D=${D#*(name } |
59 |
D=${D%)*} |
60 |
if [ "$D" != "Domain-0" ]; then |
61 |
#Attempt to force linux domU's to remount readonly |
62 |
xm sysrq $D s |
63 |
xm sysrq $D u |
64 |
fi |
65 |
done |
66 |
sleep 10 |
67 |
xm list -l | grep '\(name [^\)]*\)' | while read D ; do |
68 |
D=${D#*(name } |
69 |
D=${D%)*} |
70 |
if [ "$D" != "Domain-0" ]; then |
71 |
ebegin "Killing domain $D" |
72 |
xm destroy $D |
73 |
eend $? |
74 |
fi |
75 |
done |
76 |
eoutdent |
77 |
fi |
43 |
fi |
78 |
fi |
44 |
|
79 |
|
45 |
ebegin "Stopping Xen control daemon" |
80 |
ebegin "Stopping Xen control daemon" |