From f9752adcd732441cc2d5604cb9b24ecfc29a6acb Mon Sep 17 00:00:00 2001
From: Sebastien GODARD <sysstat@orange.fr.fake>
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