tools: use pidfile for test if xenstored is running
authorJuergen Gross <jgross@suse.com>
Tue, 2 Aug 2016 16:10:46 +0000 (18:10 +0200)
committerWei Liu <wei.liu2@citrix.com>
Fri, 5 Aug 2016 09:37:11 +0000 (10:37 +0100)
Instead of trying to read xenstore via xenstore-read use the pidfile
of xenstored for the test whether xenstored is running. This prepares
support of xenstore domain, as trying to read xenstore will block
for ever in case xenstore domain is started after trying to read.

Signed-off-by: Juergen Gross <jgross@suse.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
tools/hotplug/Linux/init.d/xencommons.in
tools/hotplug/Linux/launch-xenstore.in

index a32608cf4501b51110f8e56577a0406ef4b47758..a6a40d6f4622bbdb844c32d59a4f0bb2253d4128 100644 (file)
@@ -96,7 +96,7 @@ case "$1" in
        do_start
        ;;
   status)
-        ${bindir}/xenstore-read -s /
+        test -f @XEN_RUN_DIR@/xenstored.pid
        ;;
   stop)
        do_stop
index 61541be120aa150e623f1cd62f4d6af46a3a7292..32de5403499197b399b618683d6375247d1ec502 100644 (file)
 XENSTORED=@XENSTORED@
 
 . @XEN_SCRIPT_DIR@/hotplugpath.sh
-test -f @CONFIG_DIR@/@CONFIG_LEAF_DIR@/xencommons && . @CONFIG_DIR@/@CONFIG_LEAF_DIR@/xencommons
 
-time=0
-timeout=30
-
-if ! `${bindir}/xenstore-read -s / >/dev/null 2>&1`
-then
-       test -z "$XENSTORED_ROOTDIR" && XENSTORED_ROOTDIR="@XEN_LIB_STORED@"
-       rm -f "$XENSTORED_ROOTDIR"/tdb* &>/dev/null
-       test -z "$XENSTORED_TRACE" || XENSTORED_ARGS=" -T @XEN_LOG_DIR@/xenstored-trace.log"
-
-       if [ -n "$XENSTORED" ] ; then
-           echo -n Starting $XENSTORED...
-           $XENSTORED --pid-file @XEN_RUN_DIR@/xenstored.pid $XENSTORED_ARGS
-       else
-           echo "No xenstored found"
-           exit 1
-       fi
+test_xenstore () {
+       test -f @XEN_RUN_DIR@/xenstored.pid
+       return $?
+}
+
+timeout_xenstore () {
+       local time=0
+       local timeout=30
 
-       # Wait for xenstored to actually come up, timing out after 30 seconds
-       while [ $time -lt $timeout ] && ! `${bindir}/xenstore-read -s / >/dev/null 2>&1` ; do
-           echo -n .
-           time=$(($time+1))
-           sleep 1
+       while [ $time -lt $timeout ] && ! test_xenstore ; do
+               echo -n .
+               time=$(($time+1))
+               sleep 1
        done
        echo
-
        # Exit if we timed out
        if ! [ $time -lt $timeout ] ; then
-           echo Could not start xenstored
-           exit 1
+               echo "Could not start $@"
+               return 1
        fi
+
+       return 0
+}
+
+test_xenstore && exit 0
+
+test -f @CONFIG_DIR@/@CONFIG_LEAF_DIR@/xencommons && . @CONFIG_DIR@/@CONFIG_LEAF_DIR@/xencommons
+
+test -z "$XENSTORED_ROOTDIR" && XENSTORED_ROOTDIR="@XEN_LIB_STORED@"
+rm -f "$XENSTORED_ROOTDIR"/tdb* &>/dev/null
+test -z "$XENSTORED_TRACE" || XENSTORED_ARGS=" -T @XEN_LOG_DIR@/xenstored-trace.log"
+
+if [ -n "$XENSTORED" ] ; then
+       echo -n Starting $XENSTORED...
+       $XENSTORED --pid-file @XEN_RUN_DIR@/xenstored.pid $XENSTORED_ARGS
+else
+       echo "No xenstored found"
+       exit 1
 fi
 
+timeout_xenstore $XENSTORED || exit 1
+
 exit 0