[libvirt] libxl and non-absolute paths

Daniel P. Berrange berrange at redhat.com
Wed Feb 18 10:15:44 UTC 2015


On Tue, Feb 17, 2015 at 08:15:34PM -0700, Jim Fehlig wrote:
> Stefan Bader wrote:
> > Just recently we moved to libvirt 1.2.12 for the next release. Which brought up
> > a few problems when working with configs which we and Debian used to have.
> >
> > A mild complaint towards the xml validation: it would be really nice of that
> > would be a bit more specific about what exactly it complains. It took me a while
> > to realize that "Extra element os in interleave" was trying to tell me
> > that the string of the loader element within the os section was not an absolute
> > path.
> >
> > The issue here is that with libxl, I think the goal was to rather allow the
> > library to select the path prefix (like for pygrub where the full path got
> > removed recently). But now the xml validation disagrees.
> >
> > This would go for bootloader for xenpv and loader (within os) for xenfv. And for
> > emulator in the device section. Though for that things are a bit more
> > complicated. The libxl driver now calls that with the help option and decides
> > from the output whether this is the "traditional" xen forked qemu or the
> > upstream qemu binary. Then it selects the device model depending on that outcome.
> >   
> 
> It only sets the device_model_version
> (LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN vs
> LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL).  device_model is
> directly VIR_STRDUP'ed from def->emulator.
> 
> > Not sure whether the libxl driver could query libxl for the path prefix.
> 
> I asked about that too, but the Xen community preferred a build-time
> approach.  Wei Liu added a pkgconfig module to Xen, enabling build-time
> detection of the paths
> 
> commit babeca328413baebfdca366a5b17c06acf4295e8
> Author: Wei Liu <wei.liu2 at citrix.com>
> Date:   Fri Jan 9 14:32:18 2015 +0000
> 
>     libxl: provide xenlight.pc
>    
>     A pkg-config file for libxl. It also contains two variables
>     (xenfirmwaredir and libexec_bin) so that tools that are very keen on
>     knowing the locations of Xen binaries (say, libvirt) can use them to
>     determine the location of the binaries.
> 
> We are not yet making use of xenlight.pc in libvirt.  But this work aims
> to improve reporting the correct paths in *capabilities*. It could also
> be used in the xl.cfg to domXML conversion code.
> 
> > Right
> > now the most straight forward way seems to move back to a full path for the
> > emulator.
> 
> Full paths are required as per the documentation.  From
> http://libvirt.org/formatdomain.html#elementsOSBootloader
> 
> "The content of the |bootloader| element provides a fully qualified path
> to the bootloader executable in the host OS."
> 
> Same for <emulator>.
> 
> >  At least now, by using the standard qemu binary for everything, we got
> > a predictable path that does not change with Xen versions. So its possible to
> > force migrate over to put /usr/bin/qemu-system-i386 there.
> >
> > But for loader and bootloader, do you think it reasonable to change the
> > templates from absFilePath to filePath?
> >   
> 
> There's probably a fair bit of existing config with e.g.
> <bootlaoder>pygrub</bootloader> that no longer validates.  ATM, I don't
> have a good answer :-/.  Is correct capabilities information and xl.cfg
> -> libvirt.xml conversion, along with better error reporting enough? 
> Should users change their non-validating domXML?
> 
> From libvirt's perspective, I think full paths, discovered from
> capabilities, should be required.  I'd like to hear Daniel's opinion. 
> He may have considered such cases when enabling the validation.

Yeah, I really think it should be using full paths for bootloader too

Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list