Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Feb 2011 12:03:22 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r218480 - projects/graid/head/sys/geom/raid
Message-ID:  <201102091203.p19C3MCh082916@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201102091203.p19C3MCh082916>