]> xenbits.xensource.com Git - xen.git/commitdiff
tools: init.d/xencommons: Wait for xenstored to start before setting dom0 name
authorIan Jackson <Ian.Jackson@eu.citrix.com>
Tue, 29 Jun 2010 14:07:17 +0000 (15:07 +0100)
committerIan Jackson <Ian.Jackson@eu.citrix.com>
Tue, 29 Jun 2010 14:07:17 +0000 (15:07 +0100)
On one of my boxes, the xenstore-write setting dom0's name starts
before xenstored is actually ready to handle the connection properly,
resulting in the name set failing.  Wait for xenstored to be up and
responding to reads before continuing, timing out after 30 seconds.

Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
tools/hotplug/Linux/init.d/xencommons

index cc52ce8820d50881a1e5a2850c386ae37ff7c46a..08fa09bbc7f8090d601e846fe38ec4a26348a8a8 100644 (file)
@@ -37,14 +37,32 @@ if ! grep -q "control_d" /proc/xen/capabilities ; then
 fi
 
 do_start () {
+        local time=0
+       local timeout=30
+
        if ! `xenstore-read -s / >/dev/null 2>&1`
        then
                test -z "$XENSTORED_ROOTDIR" || XENSTORED_ROOTDIR="/var/lib/xenstored"
                rm -f "$XENSTORED_ROOTDIR"/tdb* &>/dev/null
                test -z "$XENSTORED_TRACE" || XENSTORED_ARGS=" -T /var/log/xen/xenstored-trace.log"
 
-               echo Starting xenstored...
+               echo -n Starting xenstored...
                xenstored --pid-file=/var/run/xenstore.pid $XENSTORED_ARGS
+
+               # Wait for xenstored to actually come up, timing out after 30 seconds
+                while [ $time -lt $timeout ] && ! `xenstore-read -s / >/dev/null 2>&1` ; 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
+               fi
+
                echo Setting domain 0 name...
                xenstore-write "/local/domain/0/name" "Domain-0"
        fi