From bd52134558190bb9973dc23b7add67ff388e316f Mon Sep 17 00:00:00 2001 From: Vito Cappello Date: Tue, 11 Aug 2026 15:50:58 -0400 Subject: [PATCH] fix(agent): don't warn on mdraid consistency checks (#2067) --- agent/mdraid_linux.go | 7 ++++++- agent/mdraid_linux_test.go | 12 ++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/agent/mdraid_linux.go b/agent/mdraid_linux.go index f891f425..f6c612eb 100644 --- a/agent/mdraid_linux.go +++ b/agent/mdraid_linux.go @@ -180,8 +180,13 @@ func mdraidSmartStatus(health mdraidHealth) string { if health.degraded > 0 { return "FAILED" } + if health.mismatchCnt > 0 { + return "WARNING" + } + // "check" scans for consistency problems without repairing mismatches. + // With no mismatches, keep it green while reporting progress attributes. switch syncAction { - case "check", "repair": + case "repair": return "WARNING" } switch state { diff --git a/agent/mdraid_linux_test.go b/agent/mdraid_linux_test.go index 28430a58..492da463 100644 --- a/agent/mdraid_linux_test.go +++ b/agent/mdraid_linux_test.go @@ -94,6 +94,18 @@ func TestMdraidSmartStatus(t *testing.T) { if got := mdraidSmartStatus(mdraidHealth{arrayState: "active", syncAction: "recover"}); got != "WARNING" { t.Fatalf("mdraidSmartStatus(recover) = %q, want WARNING", got) } + if got := mdraidSmartStatus(mdraidHealth{arrayState: "clean", syncAction: "check"}); got != "PASSED" { + t.Fatalf("mdraidSmartStatus(clean+check) = %q, want PASSED", got) + } + if got := mdraidSmartStatus(mdraidHealth{arrayState: "clean", syncAction: "check", mismatchCnt: 1}); got != "WARNING" { + t.Fatalf("mdraidSmartStatus(clean+check+mismatch) = %q, want WARNING", got) + } + if got := mdraidSmartStatus(mdraidHealth{arrayState: "clean", mismatchCnt: 1}); got != "WARNING" { + t.Fatalf("mdraidSmartStatus(clean+mismatch) = %q, want WARNING", got) + } + if got := mdraidSmartStatus(mdraidHealth{arrayState: "clean", syncAction: "repair"}); got != "WARNING" { + t.Fatalf("mdraidSmartStatus(repair) = %q, want WARNING", got) + } if got := mdraidSmartStatus(mdraidHealth{arrayState: "clean"}); got != "PASSED" { t.Fatalf("mdraidSmartStatus(clean) = %q, want PASSED", got) }