From 653c316533bbadd6e5f75abb69b3953dd43232d9 Mon Sep 17 00:00:00 2001 From: Sebastien GODARD 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