From c5164e530c922c816afa27669d10530fd89fe3a9 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Sat, 28 Jun 2008 08:31:43 +1000 Subject: [PATCH] --- yaml --- r: 104243 b: refs/heads/master c: a99ac97113d5bc25ddc4d17f404c2024ac6c57f9 h: refs/heads/master i: 104241: 11c334269f21bdef3865460ef0fc42a72e7f55cf 104239: 93ea5f1ecfd35ab45b69ee1fed39025b9dc74241 v: v3 --- [refs] | 2 +- trunk/Documentation/md.txt | 7 +++++++ trunk/drivers/md/md.c | 6 +++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 85b8cffe3da6..c525cefd518e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 72a23c211e4587859d5bf61ac4962d76e593fb02 +refs/heads/master: a99ac97113d5bc25ddc4d17f404c2024ac6c57f9 diff --git a/trunk/Documentation/md.txt b/trunk/Documentation/md.txt index c05bfb55659e..eb6e69e3732e 100644 --- a/trunk/Documentation/md.txt +++ b/trunk/Documentation/md.txt @@ -392,6 +392,13 @@ also have achieved. In that case, the transition to "recover" isn't notified, but the transition away is. + degraded + This contains a count of the number of devices by which the + arrays is degraded. So an optimal array with show '0'. A + single failed/missing drive will show '1', etc. + This file responds to select/poll, any increase or decrease + in the count of missing devices will trigger an event. + mismatch_count When performing 'check' and 'repair', and possibly when performing 'resync', md will count the number of errors that are diff --git a/trunk/drivers/md/md.c b/trunk/drivers/md/md.c index c26dcad8a3ac..60d4cad88c20 100644 --- a/trunk/drivers/md/md.c +++ b/trunk/drivers/md/md.c @@ -2969,6 +2969,7 @@ action_store(mddev_t *mddev, const char *page, size_t len) err = mddev->pers->start_reshape(mddev); if (err) return err; + sysfs_notify(&mddev->kobj, NULL, "degraded"); } else { if (cmd_match(page, "check")) set_bit(MD_RECOVERY_CHECK, &mddev->recovery); @@ -3686,6 +3687,7 @@ static int do_md_run(mddev_t * mddev) md_new_event(mddev); sysfs_notify(&mddev->kobj, NULL, "array_state"); sysfs_notify(&mddev->kobj, NULL, "sync_action"); + sysfs_notify(&mddev->kobj, NULL, "degraded"); kobject_uevent(&mddev->gendisk->dev.kobj, KOBJ_CHANGE); return 0; } @@ -6049,7 +6051,9 @@ void md_check_recovery(mddev_t *mddev) if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery)) { /* success...*/ /* activate any spares */ - mddev->pers->spare_active(mddev); + if (mddev->pers->spare_active(mddev)) + sysfs_notify(&mddev->kobj, NULL, + "degraded"); } md_update_sb(mddev, 1);