]> granicus.if.org Git - sysstat/commitdiff
ignoring autofs as real filesystem by counting number of valid filesystems and gettin...
authorOndrej Dubaj <odubaj@redhat.com>
Thu, 28 Feb 2019 14:29:08 +0000 (15:29 +0100)
committerOndrej Dubaj <odubaj@redhat.com>
Thu, 28 Feb 2019 14:29:08 +0000 (15:29 +0100)
count.c
rd_stats.c

diff --git a/count.c b/count.c
index 03469b0bf29716d5040cc361fbee80633b7ba9e4..6424baae8c07e41edb47d3d2171108dc92d2f65a 100644 (file)
--- a/count.c
+++ b/count.c
@@ -463,8 +463,8 @@ __nr_t get_usb_nr(void)
 __nr_t get_filesystem_nr(void)
 {
        FILE *fp;
-       char line[512], fs_name[MAX_FS_LEN], mountp[256];
-       char *pos = 0;
+       char line[512], fs_name[MAX_FS_LEN], mountp[256], type[128];
+       char *pos = 0, *pos2 = 0;
        __nr_t fs = 0;
        int skip = 0, skip_next = 0;
        struct statvfs buf;
@@ -491,6 +491,20 @@ __nr_t get_filesystem_nr(void)
                        if (pos == NULL)
                                continue;
 
+                       /*      
+                        * Find second field separator position,
+                        * read filesystem type,
+                        * if filesystem type is autofs, skip it 
+                       */
+                       memset(type, 0, sizeof(type));
+                       pos2 = strchr(pos + 1, ' ');
+                       if (pos2 == NULL)
+                               continue;
+                       
+                       sscanf(pos2 + 1, "%127s", type);
+                       if(strcmp(type, "autofs") == 0)
+                               continue;
+
                        /* Read filesystem name and mount point */
                        sscanf(line, "%127s", fs_name);
                        sscanf(pos + 1, "%255s", mountp);
index 61dc95852ffec31563d88845e8ba417e8f322a16..43e082ce5850541c2e405e9d73b7ac0021500197 100644 (file)
@@ -2464,10 +2464,10 @@ __nr_t read_bus_usb_dev(struct stats_pwr_usb *st_pwr_usb, __nr_t nr_alloc)
 __nr_t read_filesystem(struct stats_filesystem *st_filesystem, __nr_t nr_alloc)
 {
        FILE *fp;
-       char line[512], fs_name[128], mountp[256];
+       char line[512], fs_name[128], mountp[256], type[128];
        int skip = 0, skip_next = 0;
        char *pos = 0;
-       __nr_t fs_read = 0;
+       __nr_t fs_read = 0, *pos2 = 0;
        struct stats_filesystem *st_filesystem_i;
        struct statvfs buf;
 
@@ -2491,6 +2491,20 @@ __nr_t read_filesystem(struct stats_filesystem *st_filesystem, __nr_t nr_alloc)
                        if (pos == NULL)
                                continue;
 
+                       /*      
+                        * Find second field separator position,
+                        * read filesystem type,
+                        * if filesystem type is autofs, skip it 
+                       */
+                       memset(type, 0, sizeof(type));
+                       pos2 = strchr(pos + 1, ' ');
+                       if (pos2 == NULL)
+                               continue;
+
+                       sscanf(pos2 + 1, "%127s", type);
+                       if(strcmp(type, "autofs") == 0)
+                               continue;
+
                        /* Read current filesystem name */
                        sscanf(line, "%127s", fs_name);
                        /*