[libvirt] [PATCH] Allow storage FS backend to be disabled

Daniel P. Berrange berrange at redhat.com
Mon Dec 15 22:10:51 UTC 2008


On Mon, Dec 15, 2008 at 10:02:45PM +0000, John Levon wrote:
> On Mon, Dec 15, 2008 at 09:51:18PM +0000, Daniel P. Berrange wrote:
> 
> > > It's Linux-specific, and it should be possible to disable it
> > 
> > Yes & no. The storage_backend_fs.c file is actually 3 backends all
> > in  one file. 
> > 
> >  - A directory based pool
> >  - A local filesystem based pool
> >  - A network filesystem based pool
> > 
> > The directory based pool only uses trivial POSIX apis like
> > open/read/write/close/stat and is intended to be the one
> > impl that is guarenteed available on all operating systems.
> > Thus we delibrately don't disable the whole compilation of
> > this file in the Makefile.am
> 
> Would be simpler to split out into separate files? This threw me.

Originally I thought it'd be easier to have them all in one file to
make sharing of code between them easier. In retrospect this was a
mistake and causes more pain than it solves, so I'd definitely be
up for separating it out, and just putting decls for the shared 
functions in a storage_backend_dir.h for the filesystem pools to
reference.

> > What compile errors do you get from the storage_backend_fs.c
> > on Solaris when you run configure --without-storage-fs ?
> 
> "/export/build/johnlev/xvm/xvm-vi/libvirt.hg/src/storage_backend_fs.c", line 34: error: cannot find include file: <endian.h>
> "/export/build/johnlev/xvm/xvm-vi/libvirt.hg/src/storage_backend_fs.c", line 35: error: cannot find include file: <byteswap.h>
> "/export/build/johnlev/xvm/xvm-vi/libvirt.hg/src/storage_backend_fs.c", line 36: error: cannot find include file: <mntent.h>
> "/export/build/johnlev/xvm/xvm-vi/libvirt.hg/src/storage_backend_fs.c", line 81: error: undefined symbol: __BIG_ENDIAN
> 
> So line 36 needs moving within the #ifdef, and we need a general replacement
> for the endian stuff. I'm not sure what you're using from byteswap.h, but we can
> just define __*_ENDIAN if they're not, I think?

byteswap.h doesn't seem to be needed anymore, mntent definitely needs
protecting. For endian.h, it looks like we can probably make use of an
existing autoconf macro,  AC_C_BIGENDIAN  to set a config.h variable
to say what our compiled endianness is, avoiding need for non-portable
use of endian.h

Regards,
Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list