| 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 |
| |
| |
| @@ -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 |
| |