svn commit: r254896 - in projects/camlock/sys/geom: multipath part zero

Alexander Motin mav at FreeBSD.org
Mon Aug 26 07:07:42 UTC 2013


Author: mav
Date: Mon Aug 26 07:07:41 2013
New Revision: 254896
URL: http://svnweb.freebsd.org/changeset/base/254896

Log:
  Declare GEOM direct dispatch support for PART, ZERO and MULTIPATH classes.
  First two have nothing to protect, the last is already locked properly.

Modified:
  projects/camlock/sys/geom/multipath/g_multipath.c
  projects/camlock/sys/geom/part/g_part.c
  projects/camlock/sys/geom/zero/g_zero.c

Modified: projects/camlock/sys/geom/multipath/g_multipath.c
==============================================================================
--- projects/camlock/sys/geom/multipath/g_multipath.c	Mon Aug 26 07:03:08 2013	(r254895)
+++ projects/camlock/sys/geom/multipath/g_multipath.c	Mon Aug 26 07:07:41 2013	(r254896)
@@ -442,6 +442,7 @@ g_multipath_create(struct g_class *mp, s
 	gp->dumpconf = g_multipath_dumpconf;
 
 	pp = g_new_providerf(gp, "multipath/%s", md->md_name);
+	pp->flags |= G_PF_DIRECT_SEND | G_PF_DIRECT_RECEIVE;
 	if (md->md_size != 0) {
 		pp->mediasize = md->md_size -
 		    ((md->md_uuid[0] != 0) ? md->md_sectorsize : 0);
@@ -479,6 +480,7 @@ g_multipath_add_disk(struct g_geom *gp, 
 	}
 	nxtcp = LIST_FIRST(&gp->consumer);
 	cp = g_new_consumer(gp);
+	cp->flags |= G_CF_DIRECT_SEND | G_CF_DIRECT_RECEIVE;
 	cp->private = NULL;
 	cp->index = MP_NEW;
 	error = g_attach(cp, pp);

Modified: projects/camlock/sys/geom/part/g_part.c
==============================================================================
--- projects/camlock/sys/geom/part/g_part.c	Mon Aug 26 07:03:08 2013	(r254895)
+++ projects/camlock/sys/geom/part/g_part.c	Mon Aug 26 07:07:41 2013	(r254896)
@@ -416,6 +416,7 @@ g_part_new_provider(struct g_geom *gp, s
 		sbuf_finish(sb);
 		entry->gpe_pp = g_new_providerf(gp, "%s", sbuf_data(sb));
 		sbuf_delete(sb);
+		entry->gpe_pp->flags |= G_PF_DIRECT_SEND | G_PF_DIRECT_RECEIVE;
 		entry->gpe_pp->private = entry;		/* Close the circle. */
 	}
 	entry->gpe_pp->index = entry->gpe_index - 1;	/* index is 1-based. */
@@ -928,6 +929,7 @@ g_part_ctl_create(struct gctl_req *req, 
 	LIST_INIT(&table->gpt_entry);
 	if (null == NULL) {
 		cp = g_new_consumer(gp);
+		cp->flags |= G_CF_DIRECT_SEND | G_CF_DIRECT_RECEIVE;
 		error = g_attach(cp, pp);
 		if (error == 0)
 			error = g_access(cp, 1, 1, 1);
@@ -1884,6 +1886,7 @@ g_part_taste(struct g_class *mp, struct 
 	 */
 	gp = g_new_geomf(mp, "%s", pp->name);
 	cp = g_new_consumer(gp);
+	cp->flags |= G_CF_DIRECT_SEND | G_CF_DIRECT_RECEIVE;
 	error = g_attach(cp, pp);
 	if (error == 0)
 		error = g_access(cp, 1, 0, 0);

Modified: projects/camlock/sys/geom/zero/g_zero.c
==============================================================================
--- projects/camlock/sys/geom/zero/g_zero.c	Mon Aug 26 07:03:08 2013	(r254895)
+++ projects/camlock/sys/geom/zero/g_zero.c	Mon Aug 26 07:07:41 2013	(r254896)
@@ -106,6 +106,7 @@ g_zero_init(struct g_class *mp)
 	gp->start = g_zero_start;
 	gp->access = g_std_access;
 	gpp = pp = g_new_providerf(gp, "%s", gp->name);
+	pp->flags |= G_PF_DIRECT_SEND | G_PF_DIRECT_RECEIVE;
 	if (!g_zero_clear)
 		pp->flags |= G_PF_ACCEPT_UNMAPPED;
 	pp->mediasize = 1152921504606846976LLU;


More information about the svn-src-projects mailing list