diff options
author | Brad Smith <brad@comstyle.com> | 2012-03-02 01:34:16 +0100 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2012-03-02 10:30:07 +0100 |
commit | 8bdc2890999c850519913be0e829e9ced979ac2f (patch) | |
tree | 41657f95b3e2d4a7ad487a248dcf7c3d0e19f9d8 | |
parent | dcb1cd293364b5269aaf3b0ac0e475aeb18e9bab (diff) | |
download | samba-8bdc2890999c850519913be0e829e9ced979ac2f.tar.gz samba-8bdc2890999c850519913be0e829e9ced979ac2f.tar.bz2 samba-8bdc2890999c850519913be0e829e9ced979ac2f.zip |
s3: Further fix for bug 8777
-rw-r--r-- | source3/configure.in | 41 | ||||
-rw-r--r-- | source3/modules/vfs_default.c | 2 | ||||
-rw-r--r-- | source3/smbd/statvfs.c | 4 |
3 files changed, 35 insertions, 12 deletions
diff --git a/source3/configure.in b/source3/configure.in index 6c7c3b0969..6269b4c6d9 100644 --- a/source3/configure.in +++ b/source3/configure.in @@ -6834,25 +6834,48 @@ fi CFLAGS=$CFLAGS_SAVE -# Checks for the vfs_fileid module +# Checks for *BSD bsd_statvfs() function # Start -AC_CHECK_FUNC(getmntent) - -AC_CHECK_HEADERS(sys/param.h sys/statfs.h sys/mount.h) +AC_CHECK_HEADERS(sys/param.h sys/mount.h) -AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid)]) -AC_CACHE_VAL(vfsfileid_cv_statfs,[ +AC_MSG_CHECKING([bsd_statvfs: checking for statfs() and struct statfs.bsize]) +AC_CACHE_VAL(bsdstatvfs_cv_statfs,[ AC_TRY_RUN([ - #include <sys/types.h> #ifdef HAVE_SYS_PARAM_H #include <sys/param.h> #endif #ifdef HAVE_SYS_MOUNT_H #include <sys/mount.h> #endif - #ifdef HAVE_SYS_STATFS_H + int main (void) + { + struct statfs fsd; + fsd.f_bsize = 0; + exit (statfs (".", &fsd)); + }], + bsdstatvfs_cv_statfs=yes, + bsdstatvfs_cv_statfs=no, + bsdstatvfs_cv_statfs=no)]) +AC_MSG_RESULT($bsdstatvfs_cv_statfs) + +if test $bsdstatvfs_cv_statfs = yes; then + AC_DEFINE(BSD_STATVFS_BSIZE,1,[Whether statfs exists and struct statfs has bsize property]) +fi + +# End +# Checks for *BSD sys_statvfs() function + +# Checks for the vfs_fileid module +# Start +AC_CHECK_FUNC(getmntent) + +AC_CHECK_HEADERS(sys/statfs.h) + +AC_MSG_CHECKING([vfs_fileid: checking for statfs() and struct statfs.f_fsid]) +AC_CACHE_VAL(vfsfileid_cv_statfs,[ + AC_TRY_RUN([ + #include <sys/types.h> #include <sys/statfs.h> - #endif int main(void) { struct statfs fsd; diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index d81adadfec..fd0ff0aa71 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -111,7 +111,7 @@ static uint32_t vfswrap_fs_capabilities(struct vfs_handle_struct *handle, NTSTATUS status; int ret = -1; -#if defined(DARWINOS) || (defined(BSD) && defined(MNT_RDONLY)) +#if defined(DARWINOS) || (defined(BSD) && defined(BSD_STATVFS_BSIZE)) struct vfs_statvfs_struct statbuf; ZERO_STRUCT(statbuf); sys_statvfs(conn->connectpath, &statbuf); diff --git a/source3/smbd/statvfs.c b/source3/smbd/statvfs.c index 7265ee74c6..1e72a8e48b 100644 --- a/source3/smbd/statvfs.c +++ b/source3/smbd/statvfs.c @@ -97,7 +97,7 @@ static int darwin_statvfs(const char *path, vfs_statvfs_struct *statbuf) return 0; } -#elif defined(BSD) && defined(MNT_RDONLY) +#elif defined(BSD) && defined(BSD_STATVFS_BSIZE) static int bsd_statvfs(const char *path, vfs_statvfs_struct *statbuf) { struct statfs statfs_buf; @@ -172,7 +172,7 @@ int sys_statvfs(const char *path, vfs_statvfs_struct *statbuf) { #if defined(DARWINOS) return darwin_statvfs(path, statbuf); -#elif defined(BSD) && defined(MNT_RDONLY) +#elif defined(BSD) && defined(BSD_STATVFS_BSIZE) return bsd_statvfs(path, statbuf); #elif defined(STAT_STATVFS) && defined(HAVE_FSID_INT) return linux_statvfs(path, statbuf); |