svn commit: r211391 - stable/8/sys/geom/sched

Andrey V. Elsukov ae at FreeBSD.org
Mon Aug 16 08:51:36 UTC 2010


Author: ae
Date: Mon Aug 16 08:51:35 2010
New Revision: 211391
URL: http://svn.freebsd.org/changeset/base/211391

Log:
  MFC r210747:
    Forward ioctl requests to original geom.
  
    PR:		148540
  Approved by:	kib (mentor)

Modified:
  stable/8/sys/geom/sched/g_sched.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cam/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/e1000/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)

Modified: stable/8/sys/geom/sched/g_sched.c
==============================================================================
--- stable/8/sys/geom/sched/g_sched.c	Mon Aug 16 08:48:39 2010	(r211390)
+++ stable/8/sys/geom/sched/g_sched.c	Mon Aug 16 08:51:35 2010	(r211391)
@@ -136,6 +136,8 @@ static void g_sched_dumpconf(struct sbuf
     struct g_geom *gp, struct g_consumer *cp, struct g_provider *pp);
 static void g_sched_init(struct g_class *mp);
 static void g_sched_fini(struct g_class *mp);
+static int g_sched_ioctl(struct g_provider *pp, u_long cmd, void *data,
+    int fflag, struct thread *td);
 
 struct g_class g_sched_class = {
 	.name = G_SCHED_CLASS_NAME,
@@ -144,6 +146,7 @@ struct g_class g_sched_class = {
 	.taste = g_sched_taste,
 	.destroy_geom = g_sched_destroy_geom,
 	.init = g_sched_init,
+	.ioctl = g_sched_ioctl,
 	.fini = g_sched_fini
 };
 
@@ -1601,6 +1604,22 @@ g_sched_fini(struct g_class *mp)
 	mtx_destroy(&me.gs_mtx);
 }
 
+static int
+g_sched_ioctl(struct g_provider *pp, u_long cmd, void *data, int fflag,
+    struct thread *td)
+{
+	struct g_consumer *cp;
+	struct g_geom *gp;
+
+	cp = LIST_FIRST(&pp->geom->consumer);
+	if (cp == NULL)
+		return (ENOIOCTL);
+	gp = cp->provider->geom;
+	if (gp->ioctl == NULL)
+		return (ENOIOCTL);
+	return (gp->ioctl(cp->provider, cmd, data, fflag, td));
+}
+
 /*
  * Read the i-th argument for a request, skipping the /dev/
  * prefix if present.


More information about the svn-src-all mailing list