diff options
author | NeilBrown <neilb@suse.de> | 2005-11-09 00:39:31 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-09 10:56:38 -0500 |
commit | ba22dcbf106338a5c46d6979f9b19564faae3d49 (patch) | |
tree | 4caae4532cda0412d2446eca8b036d4e0df447f8 /drivers/md/md.c | |
parent | 007583c9253fed363a0bd71b039e9b40a0f6855e (diff) |
[PATCH] md: improvements to raid5 handling of read errors
Two refinements to the 'attempt-overwrite-on-read-error' mechanism.
1/ If the array is read-only, don't attempt an over-write.
2/ If there are more than max_nr_stripes read errors on a device with
no success, fail the drive. This will make sure a dead
drive will be eventually kicked even when we aren't trying
to rewrite (which would normally kick a dead drive more quickly.
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r-- | drivers/md/md.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index 3db5c3513072..3fb80397f8aa 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -1582,6 +1582,7 @@ static mdk_rdev_t *md_import_device(dev_t newdev, int super_format, int super_mi | |||
1582 | rdev->in_sync = 0; | 1582 | rdev->in_sync = 0; |
1583 | rdev->data_offset = 0; | 1583 | rdev->data_offset = 0; |
1584 | atomic_set(&rdev->nr_pending, 0); | 1584 | atomic_set(&rdev->nr_pending, 0); |
1585 | atomic_set(&rdev->read_errors, 0); | ||
1585 | 1586 | ||
1586 | size = rdev->bdev->bd_inode->i_size >> BLOCK_SIZE_BITS; | 1587 | size = rdev->bdev->bd_inode->i_size >> BLOCK_SIZE_BITS; |
1587 | if (!size) { | 1588 | if (!size) { |