Add bind-mount for /etc/adjtime to make subhost use host clock without ado
[rrq/overlay-boot.git] / overlay-stop
index 2c57c52f529610d65d8c8ddaffa5dccce6524d57..132da7600e7b37453e94a10a748367fb04896055 100755 (executable)
@@ -2,16 +2,21 @@
 #
 # Script to stop the nominated overlay subhost
 
-[ $(id -u) = 0 ] || exec sudo $0 $@
-. $(dirname $(realpath $0))/functions XXX
+OVERLAYDIR="$(dirname $(realpath $0))"
+. $OVERLAYDIR/functions $*
 
-NAME="$1"
+subhost_name "$1"
+subhost_config
 
 read USPID RSPID <<EOF
 $(is_live $NAME)
 EOF
 
-[ -z "$USPID" ] && echo "$NAME i snot running" >&2 && exit 1
+if [ -z "$USPID" ] ; then
+    [ -r /run/netns/$NAME ] && ip netns del $NAME
+    echo "$NAME is not running" >&2
+    exit 1
+fi
 
 if [ -z "$RSPID" ] ; then
     cat <<EOF >&2
@@ -21,5 +26,18 @@ EOF
     exit 1
 fi
 
-CHILDPIDS="$(nsenter -t $RSPID -p -m ps -hopid --ppid 1)"
-nsenter -t $RSPID -p -m kill $CHILDPIDS
+START="$(reverse "$START")"
+nsenter -t $RSPID -p -m -i -u \
+       ip netns exec $NAME chroot $(realpath $LIVE) \
+       /bin/sh -c "for srv in $START ; do service \$srv stop ; done"
+
+for p in $RSPID $USPID ; do
+    for S in 15 1 2 9 ; do
+       ps -hocmd $p || break
+       kill -$S $p
+    done
+done
+
+[ -r /run/netns/$NAME ] && ip netns del $NAME
+
+true