On Fri, Jun 22, 2007 at 03:35:42AM +0100, Daniel P. Berrange wrote: > This is the final step to move the QEMU code out of the daemon binary and > into the main libvirt.so library. Practically all of protocol.x goes away > apart from a single struct representing the header - this should probably > be moved into remote_protocol.x - or vica-verca. The --remote switch to > the daemon is removed since its no longer needed. A single --listen switch > is added to control whether the daemon opens any TCP/IP sockets or not, > and a config file in /etc/sysconfig/libvirtd is provided to toggle this. > By default the daemon will only listen on a UNIX socket, unless the admin > edits /etc/sysconfig/libvirtd to enable TCP - whether it uses TCP or TLS > is still upto the libvirtd.conf config file. > > The driver.c file is switched over to using virGetDomain and virGetNetwork > instead of its previous temporary / nasty hack. A qemudRegister function > is added to make the new implementation be registered. > > The daemon now registers an event loop implementation to be used by the > QEMU driver. Various bits of code relating to the QEMU protocol are killed > off in the qemud.c file. > > The remote_internal.c file is adapted so that it will handle qemu:///sesion > and qemu:///system URLs as if they were qemu+unix:///session and > qemu+unix:///system respectively. It is also adapted so that in the case > of qemu:///session is uses $HOME/.libvirt/libvirt-sock for the UNIX domain > socket path. It is also tweaked to use the abstract namespace if the first > character is @ > > > Rather than showing a huge +10000 lines, -10000 lines diff caused by > moving files from qemud/ into src/, i've applied some makefile trickery > to make libvirt.so compile some files out of qemud/ directly. I intend > to commit it in this format, and then do the actual file names in a second > commit. This will avoid mixing functional changes, with plain renames > to preserve better historical CVS logs. > > The files to be moved from qemud/ to src/ are: > > driver.c -> qemud_driver.c > driver.h -> qemud_driver.h > conf.c -> qemud_conf.c > conf.h -> qemud_conf.h > bridge.c > bridge.h > iptables.c > iptables.h > uuid.c > uuid.h > > The files to be completely deleted are: > > dispatch.c > dispatch.h > protocol.c > protocol.h > protocol.x > qemu_internal.c > qemu_internal.h > > > NB. one feature I've just realized is missing is the autostart of the > daemon when using qemu:///session in remote_internal.c. Shouldn't be > much work to move the neccessary code from qemu_internal.c across. > > 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 -=| > diff -r c6fe9aa77e5b libvirt.spec.in > --- a/libvirt.spec.in Thu Jun 21 21:21:11 2007 -0400 > +++ b/libvirt.spec.in Thu Jun 21 21:21:14 2007 -0400 > @@ -124,10 +124,7 @@ fi > %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/ > %dir %attr(0700, root, root) %{_sysconfdir}/libvirt/qemu/networks/autostart > %{_sysconfdir}/rc.d/init.d/libvirtd > -%dir %{_sysconfdir}/libvirt > -%dir %{_sysconfdir}/libvirt/qemu > -%dir %{_sysconfdir}/libvirt/qemu/networks > -%dir %{_sysconfdir}/libvirt/qemu/networks/autostart > +%config(noreplace) %{_sysconfdir}/sysconfig/libvirtd > %dir %{_datadir}/libvirt/ > %dir %{_datadir}/libvirt/networks/ > %{_datadir}/libvirt/networks/default.xml Hum, what happens on rpm -U of the old version w.r.t. the daemon ? [...] > --- /dev/null Thu Jan 01 00:00:00 1970 +0000 > +++ b/qemud/libvirtd.sysconf Thu Jun 21 21:21:14 2007 -0400 > @@ -0,0 +1,6 @@ > +# Override the default config file > +#LIBVIRTD_CONFIG=/etc/libvirt/libvirtd.conf > + > +# Listen for TCP/IP connections > +# NB. must setup TLS/SSL keys prior to using this > +#LIBVIRTD_ARGS="--listen" Hum interesting that wasn't present before > diff -r c6fe9aa77e5b qemud/qemud.c [...] > + if (snprintf(sockname, maxlen, "@%s/.libvirt/libvirt-sock", pw->pw_dir) >= maxlen) > + goto snprintf_error; > + > + if (snprintf(server->logDir, PATH_MAX, "%s/.libvirt/log", pw->pw_dir) >= PATH_MAX) > + goto snprintf_error; > + > + if (asprintf (&base, "%s/.libvirt", pw->pw_dir) == -1) { > + qemudLog (QEMUD_ERR, "out of memory in asprintf"); > + return -1; We really need one function to cleanup those path builds. > diff -r c6fe9aa77e5b src/Makefile.am [...] > @@ -42,8 +43,12 @@ CLIENT_SOURCES = \ > proxy_internal.c proxy_internal.h \ > conf.c conf.h \ > xm_internal.c xm_internal.h \ > - qemu_internal.c qemu_internal.h \ > - remote_internal.c remote_internal.h > + remote_internal.c remote_internal.h \ > + ../qemud/bridge.c ../qemud/bridge.h \ > + ../qemud/iptables.c ../qemud/iptables.h \ > + ../qemud/uuid.c ../qemud/uuid.h \ > + ../qemud/driver.c ../qemud/driver.h \ > + ../qemud/qemu_conf.c ../qemud/conf.h > > SERVER_SOURCES = \ > ../qemud/protocol.h ../qemud/protocol.c \ > @@ -58,6 +63,9 @@ virsh_DEPENDENCIES = $(DEPS) > virsh_DEPENDENCIES = $(DEPS) > virsh_LDADD = $(LDADDS) $(VIRSH_LIBS) > virsh_CFLAGS = $(COVERAGE_CFLAGS) > + > +../qemud/qemu_conf.c: > + ln -s conf.c $@ As long as it's temporary just to help review, fine :-) Okay, looks fine, +1 thanks a million ! Daniel -- Red Hat Virtualization group http://redhat.com/virtualization/ Daniel Veillard | virtualization library http://libvirt.org/ veillard@xxxxxxxxxx | libxml GNOME XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | Rpmfind RPM search engine http://rpmfind.net/