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 :|