Date: Mon, 16 Aug 2010 08:51:35 +0000 (UTC) From: "Andrey V. Elsukov" <ae@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r211391 - stable/8/sys/geom/sched Message-ID: <201008160851.o7G8pZqR090150@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201008160851.o7G8pZqR090150>