From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark McLoughlin Subject: [PATCH] Allow xendomains to handle domain names > 16 characters Date: Mon, 18 Jun 2007 17:16:37 +0100 Message-ID: <1182183397.13846.11.camel@blaa> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-38mO2jCVX7JUjddS2a8C" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel List-Id: xen-devel@lists.xenproject.org --=-38mO2jCVX7JUjddS2a8C Content-Type: text/plain Content-Transfer-Encoding: 7bit Hi, The xendomains init script parses the output of "xm list", and since xm list restricts the length of domains to 16 characters the xendomain script cannot handle long domain names. Attached is a patch to make it parse the output of "xm list -l" instead. Signed-off-by: Mark McLoughlin Thanks, Mark. --=-38mO2jCVX7JUjddS2a8C Content-Disposition: attachment; filename=xen-xendomains-17chars.patch Content-Type: text/x-patch; name=xen-xendomains-17chars.patch; charset=UTF-8 Content-Transfer-Encoding: 7bit Index: xen-unstable.hg/tools/examples/init.d/xendomains =================================================================== --- xen-unstable.hg.orig/tools/examples/init.d/xendomains +++ xen-unstable.hg/tools/examples/init.d/xendomains @@ -182,25 +182,31 @@ rdnames() parseln() { - name=`echo "$1" | cut -c0-17` - name=${name%% *} - rest=`echo "$1" | cut -c18- ` - read id mem cpu vcpu state tm < <(echo "$rest") + if [[ "$1" =~ "\(domain" ]]; then + name=;id= + else if [[ "$1" =~ "\(name" ]]; then + name=$(echo $1 | sed -e 's/^.*(name \(.*\))$/\1/') + else if [[ "$1" =~ "\(domid" ]]; then + id=$(echo $1 | sed -e 's/^.*(domid \(.*\))$/\1/') + fi; fi; fi + + [ -n "$name" -a -n "$id" ] && return 0 || return 1 } is_running() { rdname $1 RC=1 + name=;id= while read LN; do - parseln "$LN" + parseln "$LN" || continue if test $id = 0; then continue; fi case $name in ($NM) RC=0 ;; esac - done < <(xm list | grep -v '^Name') + done < <(xm list -l | grep '(\(domain\|domid\|name\)') return $RC } @@ -267,13 +273,14 @@ start() all_zombies() { + name=;id= while read LN; do - parseln "$LN" + parseln "$LN" || continue 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 -l | grep '(\(domain\|domid\|name\)') return 0 } @@ -309,8 +316,9 @@ stop() rdnames fi echo -n "Shutting down Xen domains:" + name=;id= while read LN; do - parseln "$LN" + parseln "$LN" || continue if test $id = 0; then continue; fi echo -n " $name" if test "$XENDOMAINS_AUTO_ONLY" = "true"; then @@ -384,7 +392,7 @@ stop() fi kill $WDOG_PID >/dev/null 2>&1 fi - done < <(xm list | grep -v '^Name') + done < <(xm list -l | grep '(\(domain\|domid\|name\)') # NB. this shuts down ALL Xen domains (politely), not just the ones in # AUTODIR/* @@ -409,15 +417,16 @@ stop() check_domain_up() { + name=;id= while read LN; do - parseln "$LN" + parseln "$LN" || continue if test $id = 0; then continue; fi case $name in ($1) return 0 ;; esac - done < <(xm list | grep -v "^Name") + done < <(xm list -l | grep '(\(domain\|domid\|name\)') return 1 } --=-38mO2jCVX7JUjddS2a8C Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --=-38mO2jCVX7JUjddS2a8C--