From: NeilBrown Date: Sun, 8 Jan 2012 13:46:41 +0000 (+1100) Subject: md: notify the 'degraded' sysfs attribute on failure. X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=f2a371c5e74dd5685ab47effa4ac7b23b1fdaae5;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git md: notify the 'degraded' sysfs attribute on failure. We currently only 'notify' changes to the 'degraded' attribute when it decreases, not when it increases. Notifying on failure is a little awkward as it happen in interrupt context. So instead, notify when we remove the failed device from the array, which is very soon afterwards. Reported-and-tested-by: Mikhail Balabin Signed-off-by: NeilBrown --- diff --git a/drivers/md/md.c b/drivers/md/md.c index 1c1c562f63dc..33aa06f12b87 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -7383,6 +7383,7 @@ static int remove_and_add_spares(struct mddev *mddev) { struct md_rdev *rdev; int spares = 0; + int removed = 0; mddev->curr_resync_completed = 0; @@ -7396,8 +7397,13 @@ static int remove_and_add_spares(struct mddev *mddev) mddev, rdev) == 0) { sysfs_unlink_rdev(mddev, rdev); rdev->raid_disk = -1; + removed++; } } + if (removed) + sysfs_notify(&mddev->kobj, NULL, + "degraded"); + list_for_each_entry(rdev, &mddev->disks, same_set) { if (rdev->raid_disk >= 0 &&