From f5f60f57172a4157b90415746a0f1a87c46c0bd9 Mon Sep 17 00:00:00 2001 From: Lorenz Kästle <12514511+RincewindsHat@users.noreply.github.com> Date: Fri, 16 Jan 2026 12:16:45 +0100 Subject: check_disk: compare inode thresholds against the correct value (#2223) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * check_disk: compare inode thresholds against the correct value * check_disk: Detect free inode number correctly in tests --------- Co-authored-by: Lorenz Kästle --- plugins/check_disk.c | 6 +++++- plugins/t/check_disk.t | 15 +++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) (limited to 'plugins') diff --git a/plugins/check_disk.c b/plugins/check_disk.c index d42b5486..e1a2baff 100644 --- a/plugins/check_disk.c +++ b/plugins/check_disk.c @@ -1262,6 +1262,10 @@ mp_subcheck evaluate_filesystem(measurement_unit measurement_unit, bool display_ double free_inode_percentage = calculate_percent(measurement_unit.inodes_free, measurement_unit.inodes_total); + mp_perfdata inode_percentage_pd = perfdata_init(); + inode_percentage_pd = mp_set_pd_value(inode_percentage_pd, free_inode_percentage); + inode_percentage_pd = mp_pd_set_thresholds(inode_percentage_pd, measurement_unit.freeinodes_percent_thresholds); + if (verbose > 0) { printf("free inode percentage computed: %g\n", free_inode_percentage); } @@ -1293,7 +1297,7 @@ mp_subcheck evaluate_filesystem(measurement_unit measurement_unit, bool display_ inodes_pd = mp_pd_set_thresholds(inodes_pd, absolut_inode_thresholds); freeindodes_percent_sc = - mp_set_subcheck_state(freeindodes_percent_sc, mp_get_pd_status(inodes_pd)); + mp_set_subcheck_state(freeindodes_percent_sc, mp_get_pd_status(inode_percentage_pd)); if (display_inodes_perfdata) { mp_add_perfdata_to_subcheck(&freeindodes_percent_sc, inodes_pd); } diff --git a/plugins/t/check_disk.t b/plugins/t/check_disk.t index 0f62fb2b..72a83ea4 100644 --- a/plugins/t/check_disk.t +++ b/plugins/t/check_disk.t @@ -80,14 +80,25 @@ if($free_percent_on_mp1 == $avg_free_percent || $free_percent_on_mp2 == $avg_fre die "One mountpoints has average space free - cannot do rest of test"; } -my $free_inodes_on_mp1 = $result->{'mp_test_result'}->{'checks'}->[1]->{'checks'}[2]->{'perfdata'}->[0]->{'value'}->{'value'}; +my $used_inodes_on_mp1 = $result->{'mp_test_result'}->{'checks'}->[1]->{'checks'}[2]->{'perfdata'}->[0]->{'value'}->{'value'}; my $total_inodes_on_mp1 = $result->{'mp_test_result'}->{'checks'}->[1]->{'checks'}[2]->{'perfdata'}->[0]->{'max'}->{'value'}; + +my $free_inodes_on_mp1 = $total_inodes_on_mp1 - $used_inodes_on_mp1; my $free_inode_percentage_on_mp1 = $free_inodes_on_mp1 / ($total_inodes_on_mp1 / 100); -my $free_inodes_on_mp2 = $result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}[2]->{'perfdata'}->[0]->{'value'}->{'value'}; +# print("free inodes on mp1: " . $free_inodes_on_mp1 . "\n"); +# print("total inodes on mp1: " . $total_inodes_on_mp1 . "\n"); +# print("free inode percentage on mp1: " . $free_inode_percentage_on_mp1 . "\n"); + +my $used_inodes_on_mp2 = $result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}[2]->{'perfdata'}->[0]->{'value'}->{'value'}; my $total_inodes_on_mp2 = $result->{'mp_test_result'}->{'checks'}->[0]->{'checks'}[2]->{'perfdata'}->[0]->{'max'}->{'value'}; +my $free_inodes_on_mp2 = $total_inodes_on_mp2 - $used_inodes_on_mp2; my $free_inode_percentage_on_mp2 = $free_inodes_on_mp2 / ($total_inodes_on_mp2 / 100); +# print("free inodes on mp2: " . $free_inodes_on_mp2 . "\n"); +# print("total inodes on mp2: " . $total_inodes_on_mp2 . "\n"); +# print("free inode percentage on mp2: " . $free_inode_percentage_on_mp2 . "\n"); + my $avg_inode_free_percentage = ceil(($free_inode_percentage_on_mp1 + $free_inode_percentage_on_mp2)/2); my ($more_inode_free, $less_inode_free); if ($free_inode_percentage_on_mp1 > $free_inode_percentage_on_mp2) { -- cgit v1.2.3-74-g34f1