aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMateusz Kusiak <[email protected]>2024-09-03 16:29:49 +0200
committerSong Liu <[email protected]>2024-09-04 14:52:45 -0700
commit2d2b3bc145b9d5b5c6f07d22291723ddb024ca76 (patch)
treec8ab72524925ba42d79e190eb703b97856972957
parentfb16787b396c46158e46b588d357dea4e090020b (diff)
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 <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Song Liu <[email protected]>
-rw-r--r--drivers/md/md.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 414146111425..b669971d4782 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;