[PATCH xfsprogs 11/14] replace statvfs64 by equivalent statvfs

Felix Janda
2016-08-07T07:35:51Z

For this it was necessary to change a workaround for missing
f_brsize on Mac OS X.

Signed-off-by: Felix Janda <felix.janda@posteo.de>
---
fsr/xfs_fsr.c | 16 ++++------------
include/darwin.h | 4 ++--
2 files changed, 6 insertions(+), 14 deletions(-)

diff --git a/fsr/xfs_fsr.c b/fsr/xfs_fsr.c
index 98390e7..f3cc07e 100644
--- a/fsr/xfs_fsr.c
+++ b/fsr/xfs_fsr.c
@@ -89,7 +89,7 @@ static void fsrallfs(char *mtab, int howlong, char *leftofffile);
static void fsrall_cleanup(int timeout);
static int getnextents(int);
int xfsrtextsize(int fd);
-int xfs_getrt(int fd, struct statvfs64 *sfbp);
+int xfs_getrt(int fd, struct statvfs *sfbp);
char * gettmpname(char *fname);
char * getparent(char *fname);
int fsrprintf(const char *fmt, ...);
@@ -888,7 +888,7 @@ fsrfile_common(
xfs_bstat_t *statp)
{
int error;
- struct statvfs64 vfss;
+ struct statvfs vfss;
struct fsxattr fsx;
unsigned long bsize;

@@ -940,16 +940,12 @@ fsrfile_common(
* Note that xfs_bstat.bs_blksize returns the filesystem blocksize,
* not the optimal I/O size as struct stat.
*/
- if (statvfs64(fsname ? fsname : fname, &vfss) < 0) {
+ if (statvfs(fsname ? fsname : fname, &vfss) < 0) {
fsrprintf(_("unable to get fs stat on %s: %s\n"),
fname, strerror(errno));
return -1;
}
-#ifndef statvfs64
bsize = vfss.f_frsize ? vfss.f_frsize : vfss.f_bsize;
-#else
- bsize = vfss.f_bsize;
-#endif
if (statp->bs_blksize * statp->bs_blocks >
vfss.f_bfree * bsize - minimumfree) {
fsrprintf(_("insufficient freespace for: %s: "
@@ -1704,7 +1700,7 @@ xfs_getgeom(int fd, xfs_fsop_geom_v1_t * fsgeom)
* Get xfs realtime space information
*/
int
-xfs_getrt(int fd, struct statvfs64 *sfbp)
+xfs_getrt(int fd, struct statvfs *sfbp)
{
unsigned long bsize;
unsigned long factor;
@@ -1717,11 +1713,7 @@ xfs_getrt(int fd, struct statvfs64 *sfbp)
close(fd);
return -1;
}
-#ifndef statvfs64
bsize = (sfbp->f_frsize ? sfbp->f_frsize : sfbp->f_bsize);
-#else
- bsize = sfbp->f_bsize;
-#endif
factor = fsgeom.blocksize / bsize; /* currently this is == 1 */
sfbp->f_bfree = (cnt.freertx * fsgeom.rtextsize) * factor;
return 0;
diff --git a/include/darwin.h b/include/darwin.h
index fb13915..bd1a112 100644
--- a/include/darwin.h
+++ b/include/darwin.h
@@ -216,8 +216,8 @@ static inline int timer_gettime (timer_t timerid, struct itimerspec *value)
# include <sys/param.h>
#include <sys/ucred.h>
#include <errno.h>
-#define statvfs64 statfs
-#define _PATH_MOUNTED "/etc/mtab"
+#define f_frsize f_bsize
+#define _PATH_MOUNTED "/etc/mtab"

struct mntent
{
--
2.7.3