summaryrefslogtreecommitdiffstats
path: root/drivers/md/md.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2006-01-06 00:20:19 -0800
committerLinus Torvalds <torvalds@g5.osdl.org>2006-01-06 08:34:03 -0800
commitddaf22abaa831763e75775e6d4c7693504237997 (patch)
tree4f6ba4cb056f8c7cea82c7d548769b879d0fb405 /drivers/md/md.c
parentd69762e98456b71167865db9e33e732a28dd36ab (diff)
downloadlinux-ddaf22abaa831763e75775e6d4c7693504237997.tar.gz
linux-ddaf22abaa831763e75775e6d4c7693504237997.tar.bz2
linux-ddaf22abaa831763e75775e6d4c7693504237997.zip
[PATCH] md: attempt to auto-correct read errors in raid1
On a read-error we suspend the array, then synchronously read the block from other arrays until we find one where we can read it. Then we try writing the good data back everywhere and make sure it works. If any write or subsequent read fails, only then do we fail the device out of the array. To be able to suspend the array, we need to also keep track of how many requests are queued for handling by raid1d. 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.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 64e7da3701a5..1364a1c97e6f 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -461,6 +461,7 @@ int sync_page_io(struct block_device *bdev, sector_t sector, int size,
bio_put(bio);
return ret;
}
+EXPORT_SYMBOL(sync_page_io);
static int read_disk_sb(mdk_rdev_t * rdev, int size)
{