From: Mateusz Kusiak Date: Tue, 3 Sep 2024 14:29:49 +0000 (+0200) Subject: md: Report failed arrays as broken in mdstat X-Git-Tag: v6.12-rc1~204^2~28^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=2d2b3bc145b9d5b5c6f07d22291723ddb024ca76;p=thirdparty%2Flinux.git md: Report failed arrays as broken in mdstat Depending on if array has personality, it is either reported as active or inactive. This patch adds third status "broken" for arrays with personality that became inoperative. The reason is end users tend to assume that "active" indicates array is operational. Add "broken" state for inoperative arrays with personality and refactor the code. Signed-off-by: Mateusz Kusiak Link: https://lore.kernel.org/r/20240903142949.53628-1-mateusz.kusiak@intel.com Signed-off-by: Song Liu --- diff --git a/drivers/md/md.c b/drivers/md/md.c index 4141461114253..b669971d47822 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -8327,14 +8327,19 @@ static int md_seq_show(struct seq_file *seq, void *v) spin_unlock(&all_mddevs_lock); spin_lock(&mddev->lock); if (mddev->pers || mddev->raid_disks || !list_empty(&mddev->disks)) { - seq_printf(seq, "%s : %sactive", mdname(mddev), - mddev->pers ? "" : "in"); + seq_printf(seq, "%s : ", mdname(mddev)); if (mddev->pers) { + if (test_bit(MD_BROKEN, &mddev->flags)) + seq_printf(seq, "broken"); + else + seq_printf(seq, "active"); if (mddev->ro == MD_RDONLY) seq_printf(seq, " (read-only)"); if (mddev->ro == MD_AUTO_READ) seq_printf(seq, " (auto-read-only)"); seq_printf(seq, " %s", mddev->pers->name); + } else { + seq_printf(seq, "inactive"); } sectors = 0;