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