[Libvir] [PATCH] Refactor xend_internal.c block device detection
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
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
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