Blame SOURCES/0014-Use-statvfs-instead-of-statfs-system-call.patch

9a8d55
From 9728faf84cdc4acc674cc862a99f57d4e6552beb Mon Sep 17 00:00:00 2001
9a8d55
From: Sebastien GODARD <sysstat@users.noreply.github.com>
9a8d55
Date: Sun, 22 Jun 2014 16:09:18 +0200
9a8d55
Subject: [PATCH] Use statvfs() instead of statfs() system call
9a8d55
9a8d55
Use statvfs() system call instead of statfs() to get filesystems
9a8d55
statistics with sar since:
9a8d55
1) statfs() has been deprecated by the LSB (useful only to get fs
9a8d55
type which is not needed here),
9a8d55
2) statvfs() better handles large file sizes.
9a8d55
9a8d55
Signed-off-by: Sebastien GODARD <sysstat@users.noreply.github.com>
9a8d55
(cherry picked from commit 0936618a799918422012036aecbf7a2b0ee32354)
9a8d55
---
9a8d55
 rd_stats.c | 18 +++++++++---------
9a8d55
 1 file changed, 9 insertions(+), 9 deletions(-)
9a8d55
9a8d55
diff --git a/rd_stats.c b/rd_stats.c
9a8d55
index 24a98f7..9f7fc37 100644
9a8d55
--- a/rd_stats.c
9a8d55
+++ b/rd_stats.c
9a8d55
@@ -27,7 +27,7 @@
9a8d55
 #include <ctype.h>
9a8d55
 #include <sys/types.h>
9a8d55
 #include <sys/stat.h>
9a8d55
-#include <sys/vfs.h>
9a8d55
+#include <sys/statvfs.h>
9a8d55
 #include <unistd.h>
9a8d55
 
9a8d55
 #include "common.h"
9a8d55
@@ -1918,7 +1918,7 @@ void read_filesystem(struct stats_filesystem *st_filesystem, int nbr)
9a8d55
 	char line[256], fs_name[MAX_FS_LEN], mountp[128];
9a8d55
 	int fs = 0;
9a8d55
 	struct stats_filesystem *st_filesystem_i;
9a8d55
-	struct statfs buf;
9a8d55
+	struct statvfs buf;
9a8d55
 
9a8d55
 	if ((fp = fopen(MTAB, "r")) == NULL)
9a8d55
 		return;
9a8d55
@@ -1931,14 +1931,14 @@ void read_filesystem(struct stats_filesystem *st_filesystem, int nbr)
9a8d55
 			
9a8d55
 			/* Replace octal codes */
9a8d55
 			oct2chr(mountp);
9a8d55
-			
9a8d55
-			if ((statfs(mountp, &buf) < 0) || (!buf.f_blocks))
9a8d55
+
9a8d55
+			if ((statvfs(mountp, &buf) < 0) || (!buf.f_blocks))
9a8d55
 				continue;
9a8d55
 			
9a8d55
 			st_filesystem_i = st_filesystem + fs++;
9a8d55
-			st_filesystem_i->f_blocks = buf.f_blocks * buf.f_bsize;
9a8d55
-			st_filesystem_i->f_bfree  = buf.f_bfree * buf.f_bsize;
9a8d55
-			st_filesystem_i->f_bavail = buf.f_bavail * buf.f_bsize;
9a8d55
+			st_filesystem_i->f_blocks = buf.f_blocks * buf.f_frsize;
9a8d55
+			st_filesystem_i->f_bfree  = buf.f_bfree * buf.f_frsize;
9a8d55
+			st_filesystem_i->f_bavail = buf.f_bavail * buf.f_frsize;
9a8d55
 			st_filesystem_i->f_files  = buf.f_files;
9a8d55
 			st_filesystem_i->f_ffree  = buf.f_ffree;
9a8d55
 			strcpy(st_filesystem_i->fs_name, fs_name);
9a8d55
@@ -2382,7 +2382,7 @@ int get_filesystem_nr(void)
9a8d55
 	FILE *fp;
9a8d55
 	char line[256], fs_name[MAX_FS_LEN], mountp[128];
9a8d55
 	int fs = 0;
9a8d55
-	struct statfs buf;
9a8d55
+	struct statvfs buf;
9a8d55
 
9a8d55
 	if ((fp = fopen(MTAB, "r")) == NULL)
9a8d55
 		/* File non-existent */
9a8d55
@@ -2399,7 +2399,7 @@ int get_filesystem_nr(void)
9a8d55
 			oct2chr(mountp);
9a8d55
 			
9a8d55
 			/* Check that total size is not null */
9a8d55
-			if (statfs(mountp, &buf) < 0)
9a8d55
+			if (statvfs(mountp, &buf) < 0)
9a8d55
 				continue;
9a8d55
 			
9a8d55
 			if (buf.f_blocks) {
9a8d55
-- 
9a8d55
2.14.3
9a8d55