Updated Branches: refs/heads/master 5460ce5b5 -> f760dac42
TS-2295: update statvfs usage Use statvfs(2) everywhere. Clean up headers so that ink_file.h has enough includes to use statvfs(2). Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/f760dac4 Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/f760dac4 Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/f760dac4 Branch: refs/heads/master Commit: f760dac42f6cbdba37259a2f57e37f55e8cb2228 Parents: 5460ce5 Author: James Peach <[email protected]> Authored: Tue Sep 24 21:40:31 2013 -0700 Committer: James Peach <[email protected]> Committed: Tue Oct 22 21:33:25 2013 -0700 ---------------------------------------------------------------------- CHANGES | 3 +++ configure.ac | 4 +++- iocore/cache/Store.cc | 46 +++++++++++++++-------------------------- lib/ts/ink_file.h | 18 ++++++++++++++-- proxy/logging/LogConfig.cc | 36 ++++---------------------------- 5 files changed, 43 insertions(+), 64 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f760dac4/CHANGES ---------------------------------------------------------------------- diff --git a/CHANGES b/CHANGES index 77a834f..c66e53e 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ -*- coding: utf-8 -*- Changes with Apache Traffic Server 4.1.0 + + *) [ TS-2295] update statvfs usage + *) [TS-2139] Fix PURGE twice to remove object in cache if enable-interim-cache *) [TS-2216] Fix cquuh log tag, which does not calculate the right http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f760dac4/configure.ac ---------------------------------------------------------------------- diff --git a/configure.ac b/configure.ac index bb23933..b25a6fb 100644 --- a/configure.ac +++ b/configure.ac @@ -1419,7 +1419,7 @@ AM_CONDITIONAL([BUILD_HTTP_LOAD], [test x"$ac_cv_func_epoll_ctl" = x"yes"]) # ----------------------------------------------------------------------------- # 5. CHECK FOR HEADER FILES -AC_CHECK_HEADERS([sys/types.h sys/mman.h]) +TS_FLAG_HEADERS([sys/types.h sys/mman.h]) TS_FLAG_HEADERS([sys/epoll.h \ sys/event.h \ sys/param.h \ @@ -1504,6 +1504,8 @@ AC_SUBST(net_ppp_defsh) AC_SUBST(ifaddrsh) AC_SUBST(readline_readlineh) +TS_FLAG_HEADERS([sys/statfs.h sys/statvfs.h sys/disk.h sys/disklabel.h]) + TS_FLAG_HEADERS([sys/sysctl.h], [], [], [[#ifdef HAVE_SYS_PARAM_H #include <sys/param.h> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f760dac4/iocore/cache/Store.cc ---------------------------------------------------------------------- diff --git a/iocore/cache/Store.cc b/iocore/cache/Store.cc index 55c35b7..bd13bfd 100644 --- a/iocore/cache/Store.cc +++ b/iocore/cache/Store.cc @@ -25,6 +25,18 @@ #include "P_Cache.h" #include "I_Layout.h" +#if HAVE_SYS_PARAM_H +#include <sys/param.h> +#endif + +#if HAVE_SYS_DISK_H +#include <sys/disk.h> +#endif + +#if HAVE_SYS_DISKLABEL_H +#include <sys/disklabel.h> +#endif + // Global Store theStore; @@ -449,19 +461,6 @@ Store::write_config_data(int fd) } #if defined(freebsd) || defined(darwin) || defined(openbsd) -// TODO: Those are probably already included from the ink_platform.h -#include <ctype.h> -#include <sys/types.h> -#include <sys/param.h> -#include <sys/mount.h> -#if defined(freebsd) -#include <sys/disk.h> -#include <sys/disklabel.h> -#elif defined(darwin) -#include <sys/disk.h> -#include <sys/statvfs.h> -#endif -#include <string.h> const char * Span::init(char *an, int64_t size) @@ -511,11 +510,11 @@ Span::init(char *an, int64_t size) return "unable to open"; } - struct statfs fs; - if ((ret = fstatfs(fd, &fs)) < 0) { - Warning("unable to statfs '%s': %d %d, %s", n, ret, errno, strerror(errno)); + struct statvfs fs; + if ((ret = fstatvfs(fd, &fs)) < 0) { + Warning("unable to statvfs '%s': %d %d, %s", n, ret, errno, strerror(errno)); socketManager.close(fd); - return "unable to statfs"; + return "unable to statvfs"; } hw_sector_size = fs.f_bsize; @@ -581,17 +580,10 @@ Lfail: socketManager.close(fd); return err; } + #endif #if defined(solaris) -// TODO: Those are probably already included from the ink_platform.h -#include <ctype.h> -#include <sys/types.h> -#include <sys/param.h> -#include <sys/mount.h> -#include <sys/stat.h> -#include <sys/statvfs.h> -#include <string.h> const char * Span::init(char *filename, int64_t size) @@ -679,10 +671,6 @@ Lfail: #endif #if defined(linux) -// TODO: Axe extra includes -#include <stdlib.h> -#include <stdio.h> -#include <fcntl.h> #include <unistd.h> /* for close() */ #include <sys/ioctl.h> #include <linux/hdreg.h> /* for struct hd_geometry */ http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f760dac4/lib/ts/ink_file.h ---------------------------------------------------------------------- diff --git a/lib/ts/ink_file.h b/lib/ts/ink_file.h index 5aa08bf..a22e33d 100644 --- a/lib/ts/ink_file.h +++ b/lib/ts/ink_file.h @@ -32,8 +32,24 @@ #ifndef _ink_file_h_ #define _ink_file_h_ +#include "ink_config.h" + #include <stdio.h> #include <sys/types.h> +#include <dirent.h> + +#if HAVE_SYS_STATFS_H +#include <sys/statfs.h> +#endif + +#if HAVE_SYS_STATVFS_H +#include <sys/statvfs.h> +#endif + +// Darwin keeps statafs(2) in <sys/mount.h> ... +#if HAVE_SYS_MOUNT_H +#include <sys/mount.h> +#endif /*===========================================================================* @@ -41,8 +57,6 @@ *===========================================================================*/ -#include <dirent.h> - // Cause ink_filepath_merge to fail if addpath is above rootpath // #define INK_FILEPATH_NOTABOVEROOT 0x01 http://git-wip-us.apache.org/repos/asf/trafficserver/blob/f760dac4/proxy/logging/LogConfig.cc ---------------------------------------------------------------------- diff --git a/proxy/logging/LogConfig.cc b/proxy/logging/LogConfig.cc index 40e0069..aa874d5 100644 --- a/proxy/logging/LogConfig.cc +++ b/proxy/logging/LogConfig.cc @@ -27,22 +27,9 @@ #ifdef HAVE_SYS_PARAM_H #include <sys/param.h> #endif -#ifdef HAVE_SYS_MOUNT_H -#include <sys/mount.h> -#endif - -#include <dirent.h> - -#if defined(linux) -#include <sys/statfs.h> -#elif defined(solaris) -#include <sys/statfs.h> -#include <sys/statvfs.h> -#elif !defined(freebsd) -#include <sys/statvfs.h> -#endif // linux #include "ink_platform.h" +#include "ink_file.h" #include "Main.h" #include "List.h" @@ -65,15 +52,6 @@ #include "LogCollationAccept.h" #endif -#if defined(linux) -#include <sys/vfs.h> -#else -extern "C" -{ - int statvfs(const char *, struct statvfs *); -} -#endif - #define DISK_IS_CONFIG_FULL_MESSAGE \ "Access logging to local log directory suspended - " \ "configured space allocation exhausted." @@ -1550,16 +1528,10 @@ LogConfig::update_space_used() // Now check the partition to see if there is enough *actual* space. // partition_space_left = m_partition_space_left; -#if defined(solaris) + struct statvfs fs; - ::memset(&fs, 0, sizeof(fs)); - int ret =::statvfs(logfile_dir, &fs); -#else - struct statfs fs; - ::memset(&fs, 0, sizeof(fs)); - int ret =::statfs(logfile_dir, &fs); -#endif - if (ret >= 0) { + + if (::statvfs(logfile_dir, &fs) >= 0) { partition_space_left = (int64_t) fs.f_bavail * (int64_t) fs.f_bsize; }
