svn commit: r218480 - projects/graid/head/sys/geom/raid

Alexander Motin mav at FreeBSD.org
Wed Feb 9 12:03:22 UTC 2011


Author: mav
Date: Wed Feb  9 12:03:22 2011
New Revision: 218480
URL: http://svn.freebsd.org/changeset/base/218480

Log:
  Allow to use completed portion of REBUILD and RESYNC subdisks for read
  errors recovery.

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	Wed Feb  9 11:49:58 2011	(r218479)
+++ projects/graid/head/sys/geom/raid/tr_raid1.c	Wed Feb  9 12:03:22 2011	(r218480)
@@ -806,7 +806,11 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_
 		*mask |= 1 << sd->sd_pos;
 		for (i = 0; i < vol->v_disks_count; i++) {
 			nsd = &vol->v_subdisks[i];
-			if (nsd->sd_state != G_RAID_SUBDISK_S_ACTIVE)
+			if (nsd->sd_state != G_RAID_SUBDISK_S_ACTIVE &&
+			    !((nsd->sd_state == G_RAID_SUBDISK_S_REBUILD ||
+			       nsd->sd_state == G_RAID_SUBDISK_S_RESYNC) && 
+			      bp->bio_offset + bp->bio_length <
+			       nsd->sd_rebuild_pos))
 				continue;
 			if ((*mask & (1 << i)) != 0)
 				continue;


More information about the svn-src-projects mailing list