svn commit: r218106 - projects/graid/head/sys/geom/raid
Warner Losh
imp at FreeBSD.org
Sun Jan 30 23:14:35 UTC 2011
Author: imp
Date: Sun Jan 30 23:14:34 2011
New Revision: 218106
URL: http://svn.freebsd.org/changeset/base/218106
Log:
Improve the remap comment, add a question about failing vs degrading a disk on the Nth read error.
Modified:
projects/graid/head/sys/geom/raid/tr_raid1.c
Modified: projects/graid/head/sys/geom/raid/tr_raid1.c
==============================================================================
--- projects/graid/head/sys/geom/raid/tr_raid1.c Sun Jan 30 22:57:52 2011 (r218105)
+++ projects/graid/head/sys/geom/raid/tr_raid1.c Sun Jan 30 23:14:34 2011 (r218106)
@@ -720,6 +720,9 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_
/*
* If there are too many read errors, we move to degraded.
+ * XXX Do we want to FAIL the drive (eg, make the user redo
+ * everything to get it back in sync), or just degrade the
+ * drive, which kicks off a resync?
*/
if (sd->sd_read_errs > SD_READ_THRESHOLD) {
g_raid_fail_disk(sd->sd_softc, sd, sd->sd_disk);
@@ -779,10 +782,13 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_
}
if (bp->bio_cflags & G_RAID_BIO_FLAG_REMAP) {
/*
- * We're doing a remap write, mark the range as unlocked now
- * and fail the disk if the write failed. If the write
- * failed, the parent's bio isn't failed since the recovered
- * read for that actually succeeded.
+ * We're done with a remap write, mark the range as unlocked.
+ * For any write errors, we agressively fail the disk since
+ * there was both a READ and a WRITE error at this location. Both
+ * types of errors generally indicates the drive is on the verge of
+ * total failure anyway. Better to stop trusting it now. However,
+ * we need to reset error to 0 in that case because we're not failing
+ * the original I/O which succeeded.
*/
G_RAID_LOGREQ(2, bp, "REMAP done %d.", bp->bio_error);
g_raid_unlock_range(sd->sd_volume, bp->bio_offset,
More information about the svn-src-projects
mailing list