@cryptotaxi247 / netdata-1 / commits / c86777295

diskspace: don't collect inodes on msdosfs (#14809)

Ilya Mashchenko committed Mar 27, 2023 at 23:48 UTC c8677729552196e46f19e2036a8fc736eeb6fb22
1 file changed +19 -4
collectors/diskspace.plugin/plugin_diskspace.c
+19 -4
@@ -6,6 +6,7 @@
6
7 #define DEFAULT_EXCLUDED_PATHS "/proc/* /sys/* /var/run/user/* /run/user/* /snap/* /var/lib/docker/*"
8 #define DEFAULT_EXCLUDED_FILESYSTEMS "*gvfs *gluster* *s3fs *ipfs *davfs2 *httpfs *sshfs *gdfs *moosefs fusectl autofs"
9 +#define DEFAULT_EXCLUDED_FILESYSTEMS_INODES "msdosfs msdos vfat overlayfs aufs* *unionfs"
10 #define CONFIG_SECTION_DISKSPACE "plugin:proc:diskspace"
11
12 #define MAX_STAT_USEC 10000LU
@@ -294,6 +295,7 @@ static inline void do_disk_space_stats(struct mountinfo *mi, int update_every) {
295
296 static SIMPLE_PATTERN *excluded_mountpoints = NULL;
297 static SIMPLE_PATTERN *excluded_filesystems = NULL;
298 + static SIMPLE_PATTERN *excluded_filesystems_inodes = NULL;
299
300 usec_t slow_timeout = MAX_STAT_USEC * update_every;
301
@@ -308,12 +310,22 @@ static inline void do_disk_space_stats(struct mountinfo *mi, int update_every) {
310 }
311
312 excluded_mountpoints = simple_pattern_create(
311 - config_get(CONFIG_SECTION_DISKSPACE, "exclude space metrics on paths", DEFAULT_EXCLUDED_PATHS), NULL,
312 - mode, true);
313 + config_get(CONFIG_SECTION_DISKSPACE, "exclude space metrics on paths", DEFAULT_EXCLUDED_PATHS),
314 + NULL,
315 + mode,
316 + true);
317
318 excluded_filesystems = simple_pattern_create(
315 - config_get(CONFIG_SECTION_DISKSPACE, "exclude space metrics on filesystems",
316 - DEFAULT_EXCLUDED_FILESYSTEMS), NULL, SIMPLE_PATTERN_EXACT, true);
319 + config_get(CONFIG_SECTION_DISKSPACE, "exclude space metrics on filesystems", DEFAULT_EXCLUDED_FILESYSTEMS),
320 + NULL,
321 + SIMPLE_PATTERN_EXACT,
322 + true);
323 +
324 + excluded_filesystems_inodes = simple_pattern_create(
325 + config_get(CONFIG_SECTION_DISKSPACE, "exclude inode metrics on filesystems", DEFAULT_EXCLUDED_FILESYSTEMS_INODES),
326 + NULL,
327 + SIMPLE_PATTERN_EXACT,
328 + true);
329
330 dict_mountpoints = dictionary_create_advanced(DICT_OPTION_NONE, &dictionary_stats_category_collectors, 0);
331 }
@@ -336,6 +348,9 @@ static inline void do_disk_space_stats(struct mountinfo *mi, int update_every) {
348 def_space = CONFIG_BOOLEAN_NO;
349 def_inodes = CONFIG_BOOLEAN_NO;
350 }
351 + if (unlikely(simple_pattern_matches(excluded_filesystems_inodes, mi->filesystem))) {
352 + def_inodes = CONFIG_BOOLEAN_NO;
353 + }
354
355 // check if the mount point is a directory #2407
356 // but only when it is enabled by default #4491