summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2011-12-08 06:26:08 +0100
committerNeilBrown <neilb@suse.de>2011-12-08 06:26:08 +0100
commit8bd2f0a05b361e07d48bb34398593f5f523946b3 (patch)
treea87860b4b8821b40eb9e6bb5333f71dfa8c3fb39
parentmd: bad blocks shouldn't cause a Blocked status on a Faulty device. (diff)
downloadlinux-8bd2f0a05b361e07d48bb34398593f5f523946b3.tar.xz
linux-8bd2f0a05b361e07d48bb34398593f5f523946b3.zip
md: ensure new badblocks are handled promptly.
When we mark blocks as bad we need them to be acknowledged by the metadata handler promptly. For an in-kernel metadata handler that was already being done. But for an external metadata handler we need to alert it of the change by sending a notification through the sysfs file. This adds that notification. Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r--drivers/md/md.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index d730e8f513a7..ee981737edfc 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -7858,6 +7858,7 @@ int rdev_set_badblocks(struct md_rdev *rdev, sector_t s, int sectors,
s + rdev->data_offset, sectors, acknowledged);
if (rv) {
/* Make sure they get written out promptly */
+ sysfs_notify_dirent_safe(rdev->sysfs_state);
set_bit(MD_CHANGE_CLEAN, &rdev->mddev->flags);
md_wakeup_thread(rdev->mddev->thread);
}