Blob Blame History Raw
From 653c316533bbadd6e5f75abb69b3953dd43232d9 Mon Sep 17 00:00:00 2001
From: Sebastien GODARD <sysstat@orange.fr.fake>
Date: Sun, 12 May 2013 16:07:55 +0200
Subject: [PATCH] Filesystems statistics (part 5): JSON output format

This patch adds JSON output format for filesystems statistics. This
format can be displayed with sadf option -j.

(cherry picked from commit 9a5447d081141289de2736f7f31f25b3b340ace9)
---
 json_stats.c | 42 +++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 41 insertions(+), 1 deletion(-)

diff --git a/json_stats.c b/json_stats.c
index 10d88e9..a5b4dcd 100644
--- a/json_stats.c
+++ b/json_stats.c
@@ -2100,5 +2100,45 @@ close_json_markup:
 __print_funct_t json_print_filesystem_stats(struct activity *a, int curr, int tab,
 					    unsigned long long itv)
 {
-	/* FIXME */
+	int i;
+	struct stats_filesystem *sfc;
+	int sep = FALSE;
+
+	xprintf(tab++, "\"filesystems\": [");
+
+	for (i = 0; i < a->nr; i++) {
+		sfc = (struct stats_filesystem *) ((char *) a->buf[curr]  + i * a->msize);
+
+		if (!sfc->f_blocks)
+			/* Size of filesystem is null: We are at the end of the list */
+			break;
+
+		if (sep) {
+			printf(",\n");
+		}
+		sep = TRUE;
+		
+		xprintf0(tab, "{\"filesystem\": \"%s\", "
+			 "\"MBfsfree\": %.0f, "
+			 "\"MBfsused\": %.0f, "
+			 "\"%%fsused\": %.2f, "
+			 "\"%%ufsused\": %.2f, "
+			 "\"Ifree\": %llu, "
+			 "\"Iused\": %llu, "
+			 "\"%%Iused\": %.2f}",
+			 sfc->fs_name,
+			 (double) sfc->f_bfree / 1024 / 1024,
+			 (double) (sfc->f_blocks - sfc->f_bfree) / 1024 / 1024,
+			 sfc->f_blocks ? SP_VALUE(sfc->f_bfree, sfc->f_blocks, sfc->f_blocks)
+				     : 0.0,
+			 sfc->f_blocks ? SP_VALUE(sfc->f_bavail, sfc->f_blocks, sfc->f_blocks)
+				     : 0.0,
+			 sfc->f_ffree,
+			 sfc->f_files - sfc->f_ffree,
+			 sfc->f_files ? SP_VALUE(sfc->f_ffree, sfc->f_files, sfc->f_files)
+				    : 0.0);
+	}
+
+	printf("\n");
+	xprintf0(--tab, "]");
 }
-- 
2.14.3