diff options
| author | Matthias Eble <psychotrahe@users.sourceforge.net> | 2010-11-15 23:59:35 +0100 |
|---|---|---|
| committer | Matthias Eble <psychotrahe@users.sourceforge.net> | 2010-11-15 23:59:35 +0100 |
| commit | 77f2c84d2f599d86a60586494169dcab17853e3a (patch) | |
| tree | e964e05b70aff5f5b9ee7ff457b7c165db5f66aa /lib | |
| parent | 896962a1ad1b7d7c75d42c565b06cc799feb0a7c (diff) | |
| download | monitoring-plugins-77f2c84d2f599d86a60586494169dcab17853e3a.tar.gz | |
Fix check_disk free space calculation if blocksizes differ within a disk group (Bekar - #2973603)
Various values (dused_pct, dfree_pct, inodes_free, inodes_total, ...) are now carried in
the parameter_list structure. Assignments have been moved to a subroutine preventing
code redundancies.
Group metrics are now calculated based on units rather than blocks. This fixes freespace calculation
when blocksizes differ within a group.
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/utils_disk.c | 13 | ||||
| -rw-r--r-- | lib/utils_disk.h | 4 |
2 files changed, 17 insertions, 0 deletions
diff --git a/lib/utils_disk.c b/lib/utils_disk.c index 3d20f4d4..5be2b2c0 100644 --- a/lib/utils_disk.c +++ b/lib/utils_disk.c | |||
| @@ -58,6 +58,19 @@ np_add_parameter(struct parameter_list **list, const char *name) | |||
| 58 | new_path->usedinodes_percent = NULL; | 58 | new_path->usedinodes_percent = NULL; |
| 59 | new_path->freeinodes_percent = NULL; | 59 | new_path->freeinodes_percent = NULL; |
| 60 | new_path->group = NULL; | 60 | new_path->group = NULL; |
| 61 | new_path->dfree_pct = -1; | ||
| 62 | new_path->dused_pct = -1; | ||
| 63 | new_path->total = 0; | ||
| 64 | new_path->available = 0; | ||
| 65 | new_path->available_to_root = 0; | ||
| 66 | new_path->used = 0; | ||
| 67 | new_path->dused_units = 0; | ||
| 68 | new_path->dfree_units = 0; | ||
| 69 | new_path->dtotal_units = 0; | ||
| 70 | new_path->inodes_total = 0; | ||
| 71 | new_path->inodes_free = 0; | ||
| 72 | new_path->dused_inodes_percent = 0; | ||
| 73 | new_path->dfree_inodes_percent = 0; | ||
| 61 | 74 | ||
| 62 | if (current == NULL) { | 75 | if (current == NULL) { |
| 63 | *list = new_path; | 76 | *list = new_path; |
diff --git a/lib/utils_disk.h b/lib/utils_disk.h index f99b9050..83a37639 100644 --- a/lib/utils_disk.h +++ b/lib/utils_disk.h | |||
| @@ -24,6 +24,10 @@ struct parameter_list | |||
| 24 | char *group; | 24 | char *group; |
| 25 | struct mount_entry *best_match; | 25 | struct mount_entry *best_match; |
| 26 | struct parameter_list *name_next; | 26 | struct parameter_list *name_next; |
| 27 | uintmax_t total, available, available_to_root, used, inodes_free, inodes_total; | ||
| 28 | double dfree_pct, dused_pct; | ||
| 29 | double dused_units, dfree_units, dtotal_units; | ||
| 30 | double dused_inodes_percent, dfree_inodes_percent; | ||
| 27 | }; | 31 | }; |
| 28 | 32 | ||
| 29 | void np_add_name (struct name_list **list, const char *name); | 33 | void np_add_name (struct name_list **list, const char *name); |
