[libvirt] [PATCH v1 1/7] configure: Check for statfs

Daniel P. Berrange berrange at redhat.com
Mon Jul 21 14:54:16 UTC 2014


On Thu, Jul 17, 2014 at 06:12:42PM +0200, Michal Privoznik wrote:
> The statfs(2) gets filesystem statistics. Currently, we use it only on
> linux, and leave stub to implement on other platforms. But hey, other
> platforms (like FreeBSD) have statfs() too. If we check it in
> configure we can wider platforms supported. Speaking of FreeBSD, the
> headers to include are of course different: sys/param.h and
> sys/mount.h on the FreeBSD and sys/statfs.h on the Linux. The header
> files are checked too.
> 
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
>  configure.ac       |  4 ++--
>  src/util/virfile.c | 21 ++++++++++++++-------
>  2 files changed, 16 insertions(+), 9 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index 8001e24..68ebf75 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -275,7 +275,7 @@ dnl and various less common threadsafe functions
>  AC_CHECK_FUNCS_ONCE([cfmakeraw fallocate geteuid getgid getgrnam_r \
>    getmntent_r getpwuid_r getuid kill mmap newlocale posix_fallocate \
>    posix_memalign prlimit regexec sched_getaffinity setgroups setns \
> -  setrlimit symlink sysctlbyname getifaddrs])
> +  setrlimit symlink sysctlbyname getifaddrs statfs])
>  
>  dnl Availability of pthread functions. Because of $LIB_PTHREAD, we
>  dnl cannot use AC_CHECK_FUNCS_ONCE. LIB_PTHREAD and LIBMULTITHREAD
> @@ -316,7 +316,7 @@ dnl Availability of various common headers (non-fatal if missing).
>  AC_CHECK_HEADERS([pwd.h paths.h regex.h sys/un.h \
>    sys/poll.h syslog.h mntent.h net/ethernet.h linux/magic.h \
>    sys/un.h sys/syscall.h sys/sysctl.h netinet/tcp.h ifaddrs.h \
> -  libtasn1.h sys/ucred.h sys/mount.h])
> +  libtasn1.h sys/ucred.h sys/mount.h sys/param.h sys/statfs.h])
>  dnl Check whether endian provides handy macros.
>  AC_CHECK_DECLS([htole64], [], [], [[#include <endian.h>]])
>  
> diff --git a/src/util/virfile.c b/src/util/virfile.c
> index 463064c..699b9f8 100644
> --- a/src/util/virfile.c
> +++ b/src/util/virfile.c
> @@ -43,11 +43,15 @@
>  # include <sys/mman.h>
>  #endif
>  
> -#ifdef __linux__
> -# if HAVE_LINUX_MAGIC_H
> -#  include <linux/magic.h>
> -# endif
> +#if HAVE_LINUX_MAGIC_H
> +# include <linux/magic.h>
> +#endif
> +
> +#ifdef HAVE_SYS_STATFS_H
>  # include <sys/statfs.h>
> +#elif defined HAVE_SYS_PARAM_H && defined HAVE_SYS_MOUNT_H
> +# include <sys/param.h>
> +# include <sys/mount.h>
>  #endif
>  
>  #if defined(__linux__) && HAVE_DECL_LO_FLAGS_AUTOCLEAR
> @@ -2817,7 +2821,7 @@ int virFilePrintf(FILE *fp, const char *msg, ...)
>  }
>  
>  
> -#ifdef __linux__
> +#ifdef HAVE_STATFS
>  
>  # ifndef NFS_SUPER_MAGIC
>  #  define NFS_SUPER_MAGIC 0x6969

I'm fairly sure these constants are entirely Linux specific, so
although you got it to compile on BSD, I don't think it'll be
returning sensible results.


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