Date: Sat, 18 Jul 2009 11:12:48 +0000 (UTC) From: Ulf Lilleengen <lulf@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r195752 - head/sys/geom/vinum Message-ID: <200907181112.n6IBCmH6000105@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200907181112.n6IBCmH6000105>