On Tue, Feb 26, 2008 at 08:29:54AM -0500, Daniel Veillard wrote:
On Tue, Feb 26, 2008 at 04:57:56AM +0000, Daniel P. Berrange wrote:
> Earlier today I started the 'simple' task of extending the QEMU driver to
> support Xenner for running Xen paravirt guests under KVM. This was at first
> glance easy because it basically looks like QEMU - in fact all we needed
> was to extend the capabilities XML for the QEMU driver to include data
> about Xen guests if Xenner is available.
>
> Unfortunately this was easier said than done...
>
> - The code generating the XML in qemu_driver.c was a mix of string
> formatting for the XML, and functional logic for determining runtime
> capabilities (kvm, kqemu, etc).
> - More runtime logic was in the qemu_conf.c file and stuff that should
> be runtime logic was static.
>
> I attempted to fix up the QEMU code for capabilities but it quickly turned
> into a horrible mess of spaghetti.
>
> Looking at the Xen driver, the situation was pretty much the same, but
> with the capabilities XML generation spread out over 3 files (xml.c,
> xen_internal.c and xend_internal.c).
>
> So I decided that we needed to have a internal API & structure to allow
> drivers to formally register & query their capabilities , and also add a
> central method for serializing it to XML. The following 2 patches implement
> this idea, and porting the Xen, QEMU and Test drivers to use it.
>
> This removes a lot of code duplication in XML formatting and makes the
> resulting code easier to follow, and should make it much quicker to
> adding capabilities info to new drivers too.
Okay I looked at both patches (too bad diff can't spot blocks moved from
one file to another) they look fine to me. This really is a good cleanup,
there are some changes included which seems a bit unrelated but fine too,
+1
This is all committed now.
Regards,
Dan.
--
|=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=|
|=- Perl modules:
http://search.cpan.org/~danberr/ -=|
|=- Projects:
http://freshmeat.net/~danielpb/ -=|
|=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|