Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Jul 2019 22:06:16 +0000 (UTC)
From:      Ryan Libby <rlibby@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r349586 - head/sys/geom/eli
Message-ID:  <201907012206.x61M6GT4038871@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rlibby
Date: Mon Jul  1 22:06:16 2019
New Revision: 349586
URL: https://svnweb.freebsd.org/changeset/base/349586

Log:
  g_eli_create: only dec g_access acw if we inc'd it
  
  Reviewed by:	cem, markj
  Sponsored by:	Dell EMC Isilon
  Differential Revision:	https://reviews.freebsd.org/D20743

Modified:
  head/sys/geom/eli/g_eli.c

Modified: head/sys/geom/eli/g_eli.c
==============================================================================
--- head/sys/geom/eli/g_eli.c	Mon Jul  1 22:00:42 2019	(r349585)
+++ head/sys/geom/eli/g_eli.c	Mon Jul  1 22:06:16 2019	(r349586)
@@ -827,7 +827,7 @@ g_eli_create(struct gctl_req *req, struct g_class *mp,
 	struct g_provider *pp;
 	struct g_consumer *cp;
 	u_int i, threads;
-	int error;
+	int dcw, error;
 
 	G_ELI_DEBUG(1, "Creating device %s%s.", bpp->name, G_ELI_SUFFIX);
 
@@ -881,10 +881,8 @@ g_eli_create(struct gctl_req *req, struct g_class *mp,
 	 * We don't open provider for writing only when user requested read-only
 	 * access.
 	 */
-	if (sc->sc_flags & G_ELI_FLAG_RO)
-		error = g_access(cp, 1, 0, 1);
-	else
-		error = g_access(cp, 1, 1, 1);
+	dcw = (sc->sc_flags & G_ELI_FLAG_RO) ? 0 : 1;
+	error = g_access(cp, 1, dcw, 1);
 	if (error != 0) {
 		if (req != NULL) {
 			gctl_error(req, "Cannot access %s (error=%d).",
@@ -996,7 +994,7 @@ failed:
 	mtx_destroy(&sc->sc_queue_mtx);
 	if (cp->provider != NULL) {
 		if (cp->acr == 1)
-			g_access(cp, -1, -1, -1);
+			g_access(cp, -1, -dcw, -1);
 		g_detach(cp);
 	}
 	g_destroy_consumer(cp);



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