[Libvir] [PATCH] Refactor xend_internal.c block device detection

Daniel Veillard veillard at redhat.com
Tue Oct 16 13:29:49 UTC 2007

On Tue, Oct 16, 2007 at 02:13:04PM +0100, Richard W.M. Jones wrote:
> This patch is a little bit esoteric, but I need it for something I'm 
> working on at the moment.
> At the moment the code in xend_internal.c: xend_parse_sexp_desc parses 
> the domain sexpr directly into XML.  This makes it rather hard to just 
> get a list of block devices without repeating the same code.  So here 
> I've factored out the common code for parsing block devices into a 
> separate function and callback.

  You really need a callback ? This makes code harder to understand 

> +            /* Call the callback function. */
> +            ret = fn (conn, data, isBlock, cdrom, isNoSrcCdrom,
> +                      drvName, drvType, src, dst, mode);

This adds flexibility but is a bit convoluted, what do you need this for ?

> There are a couple of small changes that you should be aware of: (1) The 
> <devices> list may be returned in a different order (specifically, block 
> devices are always returned first).  (2) We iterate over the root nodes 
> of the sexpr twice (once for block devices, once for vifs and vfbs). 
> But the sexpr is small and in-memory so this shouldn't be a problem 
> compared to having to do the HTTP request to xend to get it in the first 
> place.

  Having disks presented first in the resulting XML is a bit cleaner IMHO
and I don't think the double scan of teh sexpr is a big deal, really.
I'm more wondering about what you need to achieve that really needs a callback
based interface.


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/

More information about the libvir-list mailing list