svn commit: r187412 - in stable/7/sys: . contrib/pf dev/cxgb
geom/vinum
Ulf Lilleengen
lulf at FreeBSD.org
Sun Jan 18 13:52:03 PST 2009
Author: lulf
Date: Sun Jan 18 21:52:01 2009
New Revision: 187412
URL: http://svn.freebsd.org/changeset/base/187412
Log:
MFC r186517:
- Fix an issue with access permissions to underlying disks used by a gvinum
plex. If the plex is a raid5 plex, and is being written to, parity data might
have to be read from the underlying disks, requiring them to be opened for
reading as well as writing.
Modified:
stable/7/sys/ (props changed)
stable/7/sys/contrib/pf/ (props changed)
stable/7/sys/dev/cxgb/ (props changed)
stable/7/sys/geom/vinum/geom_vinum_plex.c
Modified: stable/7/sys/geom/vinum/geom_vinum_plex.c
==============================================================================
--- stable/7/sys/geom/vinum/geom_vinum_plex.c Sun Jan 18 21:40:15 2009 (r187411)
+++ stable/7/sys/geom/vinum/geom_vinum_plex.c Sun Jan 18 21:52:01 2009 (r187412)
@@ -667,11 +667,21 @@ gv_plex_normal_request(struct gv_plex *p
static int
gv_plex_access(struct g_provider *pp, int dr, int dw, int de)
{
+ struct gv_plex *p;
struct g_geom *gp;
struct g_consumer *cp, *cp2;
int error;
gp = pp->geom;
+ p = gp->softc;
+ KASSERT(p != NULL, ("NULL p"));
+
+ if (p->org == GV_PLEX_RAID5) {
+ if (dw > 0 && dr == 0)
+ dr = 1;
+ else if (dw < 0 && dr == 0)
+ dr = -1;
+ }
LIST_FOREACH(cp, &gp->consumer, consumer) {
error = g_access(cp, dr, dw, de);
More information about the svn-src-stable-7
mailing list