summaryrefslogtreecommitdiffstats
path: root/plugins/check_disk.c
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/check_disk.c')
-rw-r--r--plugins/check_disk.c33
1 files changed, 26 insertions, 7 deletions
diff --git a/plugins/check_disk.c b/plugins/check_disk.c
index 51e8e85..ac86f4d 100644
--- a/plugins/check_disk.c
+++ b/plugins/check_disk.c
@@ -146,6 +146,8 @@ char *warn_usedspace_percent = NULL;
146char *crit_usedspace_percent = NULL; 146char *crit_usedspace_percent = NULL;
147char *warn_usedinodes_percent = NULL; 147char *warn_usedinodes_percent = NULL;
148char *crit_usedinodes_percent = NULL; 148char *crit_usedinodes_percent = NULL;
149char *warn_freeinodes_percent = NULL;
150char *crit_freeinodes_percent = NULL;
149 151
150 152
151int 153int
@@ -197,6 +199,7 @@ main (int argc, char **argv)
197 set_thresholds(&path->usedspace_units, warn_usedspace_units, crit_usedspace_units); 199 set_thresholds(&path->usedspace_units, warn_usedspace_units, crit_usedspace_units);
198 set_thresholds(&path->usedspace_percent, warn_usedspace_percent, crit_usedspace_percent); 200 set_thresholds(&path->usedspace_percent, warn_usedspace_percent, crit_usedspace_percent);
199 set_thresholds(&path->usedinodes_percent, warn_usedinodes_percent, crit_usedinodes_percent); 201 set_thresholds(&path->usedinodes_percent, warn_usedinodes_percent, crit_usedinodes_percent);
202 set_thresholds(&path->freeinodes_percent, warn_freeinodes_percent, crit_freeinodes_percent);
200 } 203 }
201 } else { 204 } else {
202 np_set_best_match(path_select_list, mount_list, exact_match); 205 np_set_best_match(path_select_list, mount_list, exact_match);
@@ -261,8 +264,8 @@ main (int argc, char **argv)
261 dfree_inodes_percent = 100 - dused_inodes_percent; 264 dfree_inodes_percent = 100 - dused_inodes_percent;
262 265
263 if (verbose >= 3) { 266 if (verbose >= 3) {
264 printf ("For %s, used_pct=%g free_pct=%g used_units=%g free_units=%g total_units=%g used_inodes_pct=%g\n", 267 printf ("For %s, used_pct=%g free_pct=%g used_units=%g free_units=%g total_units=%g used_inodes_pct=%g free_inodes_pct=%g\n",
265 me->me_mountdir, dused_pct, dfree_pct, dused_units, dfree_units, dtotal_units, dused_inodes_percent); 268 me->me_mountdir, dused_pct, dfree_pct, dused_units, dfree_units, dtotal_units, dused_inodes_percent, dfree_inodes_percent);
266 } 269 }
267 270
268 /* Threshold comparisons */ 271 /* Threshold comparisons */
@@ -287,6 +290,10 @@ main (int argc, char **argv)
287 if (verbose >=3) printf("Usedinodes_percent result=%d\n", temp_result); 290 if (verbose >=3) printf("Usedinodes_percent result=%d\n", temp_result);
288 disk_result = max_state( disk_result, temp_result ); 291 disk_result = max_state( disk_result, temp_result );
289 292
293 temp_result = get_status(dfree_inodes_percent, path->freeinodes_percent);
294 if (verbose >=3) printf("Freeinodes_percent result=%d\n", temp_result);
295 disk_result = max_state( disk_result, temp_result );
296
290 result = max_state(result, disk_result); 297 result = max_state(result, disk_result);
291 298
292 /* What a mess of units. The output shows free space, the perf data shows used space. Yikes! 299 /* What a mess of units. The output shows free space, the perf data shows used space. Yikes!
@@ -309,8 +316,8 @@ main (int argc, char **argv)
309 asprintf (&perf, "%s %s", perf, 316 asprintf (&perf, "%s %s", perf,
310 perfdata ((!strcmp(me->me_mountdir, "none") || display_mntp) ? me->me_devname : me->me_mountdir, 317 perfdata ((!strcmp(me->me_mountdir, "none") || display_mntp) ? me->me_devname : me->me_mountdir,
311 dused_units, units, 318 dused_units, units,
312 TRUE, warning_high_tide, 319 (warning_high_tide != UINT_MAX ? TRUE : FALSE), warning_high_tide,
313 TRUE, critical_high_tide, 320 (critical_high_tide != UINT_MAX ? TRUE : FALSE), critical_high_tide,
314 TRUE, 0, 321 TRUE, 0,
315 TRUE, dtotal_units)); 322 TRUE, dtotal_units));
316 323
@@ -477,10 +484,18 @@ process_arguments (int argc, char **argv)
477 break; 484 break;
478 485
479 case 'W': /* warning inode threshold */ 486 case 'W': /* warning inode threshold */
480 warn_usedinodes_percent = optarg; 487 if (*optarg == '@') {
488 warn_freeinodes_percent = optarg;
489 } else {
490 asprintf(&warn_freeinodes_percent, "@%s", optarg);
491 }
481 break; 492 break;
482 case 'K': /* critical inode threshold */ 493 case 'K': /* critical inode threshold */
483 crit_usedinodes_percent = optarg; 494 if (*optarg == '@') {
495 crit_freeinodes_percent = optarg;
496 } else {
497 asprintf(&crit_freeinodes_percent, "@%s", optarg);
498 }
484 break; 499 break;
485 case 'u': 500 case 'u':
486 if (units) 501 if (units)
@@ -525,7 +540,7 @@ process_arguments (int argc, char **argv)
525 if (! (warn_freespace_units || crit_freespace_units || warn_freespace_percent || 540 if (! (warn_freespace_units || crit_freespace_units || warn_freespace_percent ||
526 crit_freespace_percent || warn_usedspace_units || crit_usedspace_units || 541 crit_freespace_percent || warn_usedspace_units || crit_usedspace_units ||
527 warn_usedspace_percent || crit_usedspace_percent || warn_usedinodes_percent || 542 warn_usedspace_percent || crit_usedspace_percent || warn_usedinodes_percent ||
528 crit_usedinodes_percent)) { 543 crit_usedinodes_percent || warn_freeinodes_percent || crit_freeinodes_percent )) {
529 die (STATE_UNKNOWN, "DISK %s: %s", _("UNKNOWN"), _("Must set a threshold value before using -p\n")); 544 die (STATE_UNKNOWN, "DISK %s: %s", _("UNKNOWN"), _("Must set a threshold value before using -p\n"));
530 } 545 }
531 se = np_add_parameter(&path_select_list, optarg); 546 se = np_add_parameter(&path_select_list, optarg);
@@ -534,6 +549,7 @@ process_arguments (int argc, char **argv)
534 set_thresholds(&se->usedspace_units, warn_usedspace_units, crit_usedspace_units); 549 set_thresholds(&se->usedspace_units, warn_usedspace_units, crit_usedspace_units);
535 set_thresholds(&se->usedspace_percent, warn_usedspace_percent, crit_usedspace_percent); 550 set_thresholds(&se->usedspace_percent, warn_usedspace_percent, crit_usedspace_percent);
536 set_thresholds(&se->usedinodes_percent, warn_usedinodes_percent, crit_usedinodes_percent); 551 set_thresholds(&se->usedinodes_percent, warn_usedinodes_percent, crit_usedinodes_percent);
552 set_thresholds(&se->freeinodes_percent, warn_freeinodes_percent, crit_freeinodes_percent);
537 break; 553 break;
538 case 'x': /* exclude path or partition */ 554 case 'x': /* exclude path or partition */
539 np_add_name(&dp_exclude_list, optarg); 555 np_add_name(&dp_exclude_list, optarg);
@@ -567,6 +583,8 @@ process_arguments (int argc, char **argv)
567 crit_usedspace_percent = NULL; 583 crit_usedspace_percent = NULL;
568 warn_usedinodes_percent = NULL; 584 warn_usedinodes_percent = NULL;
569 crit_usedinodes_percent = NULL; 585 crit_usedinodes_percent = NULL;
586 warn_freeinodes_percent = NULL;
587 crit_freeinodes_percent = NULL;
570 break; 588 break;
571 case 'V': /* version */ 589 case 'V': /* version */
572 print_revision (progname, revision); 590 print_revision (progname, revision);
@@ -594,6 +612,7 @@ process_arguments (int argc, char **argv)
594 set_thresholds(&se->usedspace_units, warn_usedspace_units, crit_usedspace_units); 612 set_thresholds(&se->usedspace_units, warn_usedspace_units, crit_usedspace_units);
595 set_thresholds(&se->usedspace_percent, warn_usedspace_percent, crit_usedspace_percent); 613 set_thresholds(&se->usedspace_percent, warn_usedspace_percent, crit_usedspace_percent);
596 set_thresholds(&se->usedinodes_percent, warn_usedinodes_percent, crit_usedinodes_percent); 614 set_thresholds(&se->usedinodes_percent, warn_usedinodes_percent, crit_usedinodes_percent);
615 set_thresholds(&se->freeinodes_percent, warn_freeinodes_percent, crit_freeinodes_percent);
597 } 616 }
598 617
599 if (units == NULL) { 618 if (units == NULL) {