svn commit: r195752 - head/sys/geom/vinum

Ulf Lilleengen lulf at FreeBSD.org
Sat Jul 18 11:12:49 UTC 2009


Author: lulf
Date: Sat Jul 18 11:12:48 2009
New Revision: 195752
URL: http://svn.freebsd.org/changeset/base/195752

Log:
  - Fix the issue with read access count modification on RAID-5 plexes properly.
    If the access counts were not increased and decreased in equal numbers by
    gvinum consumers, the read access count would be inconsistent with the write
    access count. Instead, modify the read access count with the write access
    count directly to prevent any inconsistencies.
  
  Approved by:	re (kib)

Modified:
  head/sys/geom/vinum/geom_vinum.c

Modified: head/sys/geom/vinum/geom_vinum.c
==============================================================================
--- head/sys/geom/vinum/geom_vinum.c	Sat Jul 18 10:36:18 2009	(r195751)
+++ head/sys/geom/vinum/geom_vinum.c	Sat Jul 18 11:12:48 2009	(r195752)
@@ -133,10 +133,12 @@ gv_access(struct g_provider *pp, int dr,
 	error = ENXIO;
 	gp = pp->geom;
 	sc = gp->softc;
-	if (dw > 0 && dr == 0)
-		dr = 1;
-	else if (dw < 0 && dr == 0)
-		dr = -1;
+	/*
+	 * We want to modify the read count with the write count in case we have
+	 * plexes in a RAID-5 organization.
+	 */
+	dr += dw;
+
 	LIST_FOREACH(d, &sc->drives, drive) {
 		if (d->consumer == NULL)
 			continue;


More information about the svn-src-all mailing list