[Libvir] <disk> <shareable/> has no effect

Daniel Veillard veillard at redhat.com
Wed Nov 21 16:14:18 UTC 2007

On Fri, Nov 16, 2007 at 10:09:19AM -0500, Daniel Veillard wrote:
> On Wed, Nov 14, 2007 at 06:55:31PM +0100, Markus Armbruster wrote:
> > Looks like <shareable/> within <disk> has no effect.  I ran virsh
> > dumpxml, inserted the <shareable/>, redefined the domain, and ran
> > virsh dumpxml again.  No shareable.  I even ran virsh undefine and
> > virsh define again, same thing.
> > 
>   Strange, I noticed that there were no test of the conversion for 
> "w!" to and from <shareable/>, so I added tests based on yours but
> they work as expected in the conversion routines as tested. So I admit
> I'm a bit lost to what could have caused the problem. Since the 
> xml dump includes the "w!" I would assume the part going from 
> the XML file for creation of the domain worked as expected, but it's
> when dumping back the domain that you got the missing  <shareable/>,
> right ? Was the domain running at that point ? If on RHEL-5(.1) and
> for a defined but non-running domain, the dump routine could use a 
> different path.

  Okay, checked and confirmed if you build from a defined domain 
it uses the xm_internal.c backend and in xenXMDomainFormatXML we
forgot to check for 'w!' and dump the <shareable/> element. The
fix is trivial, enclosed, and I will commit it tomorrow unless
someone disagrees,


Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard      | virtualization library  http://libvirt.org/
veillard at redhat.com  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine  http://rpmfind.net/
-------------- next part --------------
Index: src/xm_internal.c
RCS file: /data/cvs/libxen/src/xm_internal.c,v
retrieving revision 1.46
diff -u -r1.46 xm_internal.c
--- src/xm_internal.c	20 Nov 2007 18:57:41 -0000	1.46
+++ src/xm_internal.c	21 Nov 2007 15:53:32 -0000
@@ -810,6 +810,8 @@
             if (!strcmp(head, "r") ||
                 !strcmp(head, "ro"))
                 virBufferAdd(buf, "      <readonly/>\n", -1);
+	    else if (!strcmp(head, "w!"))
+	        virBufferAdd(buf, "      <shareable/>\n", -1);
             virBufferAdd(buf, "    </disk>\n", -1);

More information about the libvir-list mailing list