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-head
mailing list