[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [Patch[ xl problems with xendomains



On Tue, 2013-05-21 at 22:12 +0100, Ian Murray wrote:
> Hi,
> 
> Ever since xl become the preferred toolstack, I have had problems using 
> the xendomains startup/shutdown script.  Having retested today, it seems 
> that the issues are now reduced down to xendomains being unable to 
> restart previously saved domains.
> 
> Here is a typical session using xl running Xen 4.2.2 on Ubuntu 64 12.04 
> bit server, using stock Dom0 kernel (3.2.0-43-generic)
> 
> root@xen6:/etc/init.d# service xendomains start
> root@xen6:/etc/init.d# service xendomains stop
> Shutting down Xen domains: *   [done]
> root@xen6:/etc/init.d# xl create /etc/xen/vpn2
> Parsing config from /etc/xen/vpn2
> Daemon running with PID 3969
> root@xen6:/etc/init.d# service xendomains start
> root@xen6:/etc/init.d# service xendomains stop
> Shutting down Xen domains: vpn2(save)....
>   *   [done]
> root@xen6:/etc/init.d# service xendomains start
> Restoring Xen domains:/etc/init.d/xendomains: line 258: [: too many 
> arguments
> 
>   *   [done]
> root@xen6:/# rm /var/lib/xen/save/vpn2
> 
> Line 258 reads as:-
> 
> -                if [ $HEADER = "LinuxGuestRecord" ]; then
> 
> There were further issues of xendomains not suspending domains properly 
> but this appear resolved now because I think the behaviour of xl list -l 
> has changed. AFAIR an extra 'domain' identifier was thrown in which was 
> causing issues with the regex parser.
> 
> Anyway, as far as I can tell, the two issues that I see are that the if 
> statement at line 258 borks because there are no quotes around the 
> $HEADER. I'll leave it to the Bash gurus to explain that; I am not one 
> and I just hacked it to work.

$HEADER presumably includes spaces, because the xl save header does, and
therefore requires quoting. This was also broken for xm because even
though the xm save header has no spaces the point of this check is to
look for corrupt/invalid save files, which may well have a space.

> Secondly, it would appear that when using xl to save a running domain, 
> the header in the save file does not contain the text "LinuxGuestRecord" 
> but in fact contains "Xen saved domain". This causes xendomains to miss 
> the save files and will not try to restore them. Placing a simple 
> variable that contains the correct header text appears to fix this.
> 
> So applying the following patch to xendomains appears to ease these 
> issues. Please be aware that I haven't tested this on anything earlier 
> than 4.2.2 and hasn't been tested at all using xm, although the issues 
> with the regex would likely break xm rather than the change below. 
> Looking back at my original submission (2 years ago), I reported the 
> issues against 4.1.1. As previously stated this had more problems 
> because of differing output of xl list -l, which appears to be employed 
> by xendomains. I haven't thoroughly tested the patch against every 
> combination of domains sysreq'd, etc, but it appears to work for auto 
> start, save and restore.

It looks correct to me.

> Thanks for reading and I hope this makes sense,
> 
> Ian.
> 
> 
> Signed-off-by: Ian MURRAY <murrayie@xxxxxxxxxxx>

Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx>

That actual patch seems to be a bit mangled (looks like an unresolved
git conflict 3 way diff thing). Since it is simple I can fix it up as I
apply.

> 
> --- xendomains.422.orig 2013-05-19 18:06:18.525195879 +0100
> +++ xendomains  2013-05-21 21:27:57.253429073 +0100
> @@ -28,10 +28,12 @@
>   ### END INIT INFO
> 
>   CMD=xm
> ++HEADCOMP="LinuxGuestRecord"
>   $CMD list &> /dev/null
>   if test $? -ne 0
>   then
>          CMD=xl
> +       HEADCOMP="Xen saved domain"
>   fi
> 
>   $CMD list &> /dev/null
> @@ -255,7 +257,7 @@
>           for dom in $XENDOMAINS_SAVE/*; do
>               if [ -f $dom ] ; then
>                   HEADER=`head -c 16 $dom | head -n 1 2> /dev/null`
> -                if [ $HEADER = "LinuxGuestRecord" ]; then
> +                if [ "$HEADER" = "$HEADCOMP" ]; then
>                       echo -n " ${dom##*/}"
>                       XMR=`$CMD restore $dom 2>&1 1>/dev/null`
>                       #$CMD restore $dom
> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.