From f9752adcd732441cc2d5604cb9b24ecfc29a6acb Mon Sep 17 00:00:00 2001 From: Sebastien GODARD Date: Mon, 20 May 2013 17:14:05 +0200 Subject: [PATCH] Filesystems stats: Display unmounted filesystems in summary list This patch enables sar -F to display filesystems in its summary list (the last stats displayed by sar) even if those filesystems have been unmounted before the end of the report. (cherry picked from commit c8b1f890f7fc242eceafc94ab3ba117247f3d577) --- pr_stats.c | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/pr_stats.c b/pr_stats.c index 85a3a20..d1edb5b 100644 --- a/pr_stats.c +++ b/pr_stats.c @@ -2445,17 +2445,14 @@ __print_funct_t print_avg_pwr_usb_stats(struct activity *a, int prev, int curr, * * IN: * @a Activity structure with statistics. - * @prev Index in array where stats used as reference are. * @curr Index in array for current sample statistics. - * @itv Interval of time in jiffies. * @dispavg TRUE if displaying average statistics. *************************************************************************** */ -__print_funct_t stub_print_filesystem_stats(struct activity *a, int prev, int curr, - unsigned long long itv, int dispavg) +__print_funct_t stub_print_filesystem_stats(struct activity *a, int curr, int dispavg) { - int i; - struct stats_filesystem *sfc; + int i, j; + struct stats_filesystem *sfc, *sfm; if (dis) { @@ -2486,6 +2483,23 @@ __print_funct_t stub_print_filesystem_stats(struct activity *a, int prev, int cu sfc->f_files ? SP_VALUE(sfc->f_ffree, sfc->f_files, sfc->f_files) : 0.0, sfc->fs_name); + + if (!dispavg) { + /* Save current filesystem in summary list */ + for (j = 0; j < a->nr; j++) { + sfm = (struct stats_filesystem *) ((char *) a->buf[2] + j * a->msize); + + if (!strcmp(sfm->fs_name, sfc->fs_name) || + !sfm->f_blocks) { + /* + * Filesystem found in list (then save again its stats) + * or free slot (end of list). + */ + *sfm = *sfc; + break; + } + } + } } } @@ -2503,7 +2517,7 @@ __print_funct_t stub_print_filesystem_stats(struct activity *a, int prev, int cu __print_funct_t print_filesystem_stats(struct activity *a, int prev, int curr, unsigned long long itv) { - stub_print_filesystem_stats(a, prev, curr, itv, FALSE); + stub_print_filesystem_stats(a, curr, FALSE); } /* @@ -2520,5 +2534,5 @@ __print_funct_t print_filesystem_stats(struct activity *a, int prev, int curr, __print_funct_t print_avg_filesystem_stats(struct activity *a, int prev, int curr, unsigned long long itv) { - stub_print_filesystem_stats(a, prev, curr, itv, TRUE); + stub_print_filesystem_stats(a, 2, TRUE); } -- 2.14.3