Some adjustments to the recent dsched removal.
authorSascha Wildner <saw@online.de>
Fri, 13 Nov 2015 21:10:50 +0000 (22:10 +0100)
committerSascha Wildner <saw@online.de>
Fri, 13 Nov 2015 21:10:50 +0000 (22:10 +0100)
* Make 'options DSCHED_FQ' a no-op for now. It used to be in our
  default config, so give people some time to edit their custom
  configs derived from X86_64_GENERIC, like we did for other such
  options. It will be completely removed at a later point in time
  after the release.

* Add a quick note to UPGRADING about this.

* While here, remove associated manual pages and MLINKS too.

Makefile_upgrade.inc
UPDATING
share/man/man4/Makefile
share/man/man4/dsched.4 [deleted file]
share/man/man9/Makefile
share/man/man9/dsched.9 [deleted file]
sys/conf/options

index 991ba83..2e06e84 100644 (file)
@@ -2235,6 +2235,28 @@ TO_REMOVE+=/boot/kernel/dsched_bfq.ko
 TO_REMOVE+=/boot/kernel/dsched_fw.ko
 TO_REMOVE+=/usr/share/man/man4/dsched_bfq.4.gz
 TO_REMOVE+=/usr/include/malloc.h
+TO_REMOVE+=/usr/share/man/man4/dsched.4.gz
+TO_REMOVE+=/usr/share/man/man4/dsched_fq.4.gz
+TO_REMOVE+=/usr/share/man/man9/dsched.9.gz
+TO_REMOVE+=/usr/share/man/man9/dsched_cancel_bio.9.gz
+TO_REMOVE+=/usr/share/man/man9/dsched_debug.9.gz
+TO_REMOVE+=/usr/share/man/man9/DSCHED_DISK_CTX_LOCK.9.gz
+TO_REMOVE+=/usr/share/man/man9/dsched_disk_ctx_ref.9.gz
+TO_REMOVE+=/usr/share/man/man9/DSCHED_DISK_CTX_UNLOCK.9.gz
+TO_REMOVE+=/usr/share/man/man9/dsched_disk_ctx_unref.9.gz
+TO_REMOVE+=/usr/share/man/man9/dsched_get_bio_dp.9.gz
+TO_REMOVE+=/usr/share/man/man9/dsched_get_bio_priv.9.gz
+TO_REMOVE+=/usr/share/man/man9/dsched_get_disk_priv.9.gz
+TO_REMOVE+=/usr/share/man/man9/dsched_new_policy_thread_tdio.9.gz
+TO_REMOVE+=/usr/share/man/man9/DSCHED_POLICY_MODULE.9.gz
+TO_REMOVE+=/usr/share/man/man9/dsched_register.9.gz
+TO_REMOVE+=/usr/share/man/man9/dsched_strategy_async.9.gz
+TO_REMOVE+=/usr/share/man/man9/dsched_strategy_raw.9.gz
+TO_REMOVE+=/usr/share/man/man9/DSCHED_THREAD_IO_LOCK.9.gz
+TO_REMOVE+=/usr/share/man/man9/dsched_thread_io_ref.9.gz
+TO_REMOVE+=/usr/share/man/man9/DSCHED_THREAD_IO_UNLOCK.9.gz
+TO_REMOVE+=/usr/share/man/man9/dsched_thread_io_unref.9.gz
+TO_REMOVE+=/usr/share/man/man9/dsched_unregister.9.gz
 
 .if !defined(WANT_INSTALLER)
 TO_REMOVE+=/usr/sbin/dfuibe_installer
index 3b02ca7..0f6aed6 100644 (file)
--- a/UPDATING
+++ b/UPDATING
 +         UPGRADING DRAGONFLY FROM 4.2 TO LATER VERSIONS                +
 +-----------------------------------------------------------------------+
 
+DSCHED REMOVED
+--------------
+
+dsched(4) has been removed and one of its kernel options, DSCHED_FQ, was
+in our default kernel config file. So the DSCHED_FQ option has been turned
+into a no-op for now and can be removed from custom configurations.
+
 EST DRIVER REMOVED, COMPILE_ET AND LIBCOM_ERR TOO
 -------------------------------------------------
 
index b211270..ceba30b 100644 (file)
@@ -87,7 +87,6 @@ MAN=  aac.4 \
        dm_target_delay.4 \
        dpt.4 \
        drm.4 \
-       dsched.4 \
        dummynet.4 \
        ecc.4 \
        ehci.4 \
@@ -431,7 +430,6 @@ MLINKS+=cue.4 if_cue.4
 MLINKS+=dc.4 if_dc.4
 MLINKS+=disc.4 if_disc.4
 MLINKS+=dm.4 dm_target_linear.4
-MLINKS+=dsched.4 dsched_fq.4
 MLINKS+=em.4 emx.4 \
        em.4 if_em.4 \
        em.4 if_emx.4
diff --git a/share/man/man4/dsched.4 b/share/man/man4/dsched.4
deleted file mode 100644 (file)
index 9bd02f3..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\"
-.Dd August 16, 2010
-.Dt DSCHED 4
-.Os
-.Sh NAME
-.Nm dsched
-.Nd kernel disk scheduler framework
-.Sh DESCRIPTION
-The
-.Nm
-framework implements a disk scheduler framework that can be
-used to switch disk scheduling policies at runtime for each
-disk in the system.
-The
-.Nm
-framework and the policies for each disk can be managed via
-.Xr loader 8
-tunables and via
-.Xr sysctl 8
-variables.
-.Sh LOADER TUNABLES
-Tunables can be set at the
-.Xr loader 8
-prompt before booting the kernel or stored in
-.Xr loader.conf 5 .
-.Bl -tag -width ".Va dsched.policy.default"
-.It Va dsched.policy.default
-This tunable sets the default policy used for every device that
-has no policy specified via any of the other tunables.
-.It Va dsched.policy.da0
-This tunable sets the dsched policy for the disk da0.
-The default value is 0.
-.It Va dsched.policy.da
-This tunable sets the dsched policy for all disks created by
-the driver
-.Xr da 4 .
-.El
-.Sh SYSCTL VARIABLES
-.Bl -tag -width ".Va dsched.policy.SN39A39"
-.It Va dsched.debug
-set the debug-level, 0 means no debugging, 5 for maximum.
-.It Va dsched.policy.default
-shows and sets the current default dsched policy.
-.It Va dsched.policy.da0
-shows and sets the current policy for the disk da0.
-.It Va dsched.policy.SN39A39
-shows and sets the current policy for the disk with serial number
-SN39A39.
-.El
-.Pp
-The following are informative only:
-.Bl -tag -width ".Va dsched.policy.SN39A39"
-.It Va dsched.policies
-shows all available dsched policies, separated by spaces.
-.El
-.Sh SEE ALSO
-.Xr dsched_bfq 4 ,
-.Xr loader.conf 5 ,
-.Xr sysctl.conf 5 ,
-.Xr dsched 9
-.Sh HISTORY
-The
-.Nm
-framework first appeared in
-.Dx 2.5 .
-.Sh AUTHORS
-The
-.Nm
-framework was written by
-.An Alex Hornung .
index 0b97540..cc5c2b4 100644 (file)
@@ -78,7 +78,6 @@ MAN=  accept_filter.9 \
        devtoname.9 \
        driver.9 \
        DRIVER_MODULE.9 \
-       dsched.9 \
        EVENTHANDLER.9 \
        extattr.9 \
        fetch.9 \
@@ -440,25 +439,6 @@ MLINKS+=devstat.9 devicestat.9 \
        devstat.9 devstat_remove_entry.9 \
        devstat.9 devstat_start_transaction.9
 MLINKS+=DRIVER_MODULE.9 DRIVER_MODULE_ORDERED.9
-MLINKS+=dsched.9 dsched_cancel_bio.9 \
-       dsched.9 dsched_debug.9 \
-       dsched.9 DSCHED_DISK_CTX_LOCK.9 \
-       dsched.9 dsched_disk_ctx_ref.9 \
-       dsched.9 DSCHED_DISK_CTX_UNLOCK.9 \
-       dsched.9 dsched_disk_ctx_unref.9 \
-       dsched.9 dsched_get_bio_dp.9 \
-       dsched.9 dsched_get_bio_priv.9 \
-       dsched.9 dsched_get_disk_priv.9 \
-       dsched.9 dsched_new_policy_thread_tdio.9 \
-       dsched.9 DSCHED_POLICY_MODULE.9 \
-       dsched.9 dsched_register.9 \
-       dsched.9 dsched_strategy_async.9 \
-       dsched.9 dsched_strategy_raw.9 \
-       dsched.9 DSCHED_THREAD_IO_LOCK.9 \
-       dsched.9 dsched_thread_io_ref.9 \
-       dsched.9 DSCHED_THREAD_IO_UNLOCK.9 \
-       dsched.9 dsched_thread_io_unref.9 \
-       dsched.9 dsched_unregister.9
 MLINKS+=EVENTHANDLER.9 EVENTHANDLER_DECLARE.9 \
        EVENTHANDLER.9 EVENTHANDLER_DEREGISTER.9 \
        EVENTHANDLER.9 eventhandler_deregister.9 \
diff --git a/share/man/man9/dsched.9 b/share/man/man9/dsched.9
deleted file mode 100644 (file)
index 49ec801..0000000
+++ /dev/null
@@ -1,526 +0,0 @@
-.\"
-.\" Copyright (c) 2010
-.\"    The DragonFly Project.  All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\"
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in
-.\"    the documentation and/or other materials provided with the
-.\"    distribution.
-.\" 3. Neither the name of The DragonFly Project nor the names of its
-.\"    contributors may be used to endorse or promote products derived
-.\"    from this software without specific, prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
-.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
-.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
-.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.Dd September 18, 2013
-.Dt DSCHED 9
-.Os
-.Sh NAME
-.Nm dsched ,
-.Nm dsched_cancel_bio ,
-.Nm dsched_debug ,
-.Nm dsched_disk_ctx_ref ,
-.Nm dsched_disk_ctx_unref ,
-.Nm dsched_new_policy_thread_tdio ,
-.Nm dsched_register ,
-.Nm dsched_strategy_async ,
-.Nm dsched_strategy_raw ,
-.Nm dsched_thread_io_ref ,
-.Nm dsched_thread_io_unref ,
-.Nm dsched_unregister ,
-.Nm DSCHED_POLICY_MODULE ,
-.Nm DSCHED_DISK_CTX_LOCK ,
-.Nm DSCHED_DISK_CTX_UNLOCK ,
-.Nm DSCHED_THREAD_IO_LOCK ,
-.Nm DSCHED_THREAD_IO_UNLOCK ,
-.Nm dsched_get_bio_dp ,
-.Nm dsched_get_bio_priv ,
-.Nm dsched_get_disk_priv
-.Nd kernel disk scheduler framework
-.Sh SYNOPSIS
-.In sys/dsched.h
-.Pp
-Functions:
-.Ft void
-.Fn dsched_cancel_bio "struct bio *bp"
-.Ft int
-.Fn dsched_debug "int level" "char *fmt" "..."
-.Ft void
-.Fn dsched_disk_ctx_ref "struct dsched_disk_ctx *diskctx"
-.Ft void
-.Fn dsched_disk_ctx_unref "struct dsched_disk_ctx *diskctx"
-.Ft void
-.Fn dsched_new_policy_thread_tdio "struct dsched_disk_ctx *diskctx" "struct dsched_policy *pol"
-.Ft int
-.Fn dsched_register "struct dsched_policy *d_policy"
-.Ft void
-.Fn dsched_strategy_async "struct disk *dp" "struct bio *bp" "biodone_t *done" "void *priv"
-.Ft void
-.Fn dsched_strategy_raw "struct disk *dp" "struct bio *bp"
-.Ft void
-.Fn dsched_thread_io_ref "struct dsched_thread_io *tdio"
-.Ft void
-.Fn dsched_thread_io_unref "struct dsched_thread_io *tdio"
-.Ft int
-.Fn dsched_unregister "struct dsched_policy *d_policy"
-.Pp
-Macros:
-.Fn DSCHED_POLICY_MODULE "name" "modeventhand_t evh" "version"
-.Fn DSCHED_DISK_CTX_LOCK "struct dsched_disk_ctx *diskctx"
-.Fn DSCHED_DISK_CTX_UNLOCK "struct dsched_disk_ctx *diskctx"
-.Fn DSCHED_THREAD_IO_LOCK "struct dsched_thread_io *tdio"
-.Fn DSCHED_THREAD_IO_UNLOCK "struct dsched_thread_io *tdio"
-.Fn dsched_get_bio_dp "struct bio *bio"
-.Fn dsched_get_bio_priv "struct bio *bio"
-.Fn dsched_get_disk_priv "struct disk *dp" "void *priv"
-.Pp
-Callbacks:
-.Ft typedef int
-.Fn dsched_prepare_t "struct dsched_disk_ctx *diskctx"
-.Ft typedef void
-.Fn dsched_teardown_t "struct dsched_disk_ctx *diskctx"
-.Ft typedef void
-.Fn dsched_cancel_t "struct dsched_disk_ctx *diskctx"
-.Ft typedef int
-.Fn dsched_queue_t "struct dsched_disk_ctx *diskctx" "struct dsched_thread_io *tdio" "struct bio *bio"
-.Ft typedef void
-.Fn dsched_new_tdio_t "struct dsched_thread_io *tdio"
-.Ft typedef void
-.Fn dsched_destroy_tdio_t "struct dsched_thread_io *tdio"
-.Ft typedef void
-.Fn dsched_new_diskctx_t "struct dsched_disk_ctx *diskctx"
-.Ft typedef void
-.Fn dsched_destroy_diskctx_t "struct dsched_disk_ctx *diskctx"
-.Sh DESCRIPTION
-To create a new dsched policy
-.Sq foo
-the following is required:
-.Bd -literal
-DSCHED_POLICY_MODULE(dsched_foo, foo_mod_handler, 1);
-
-struct dsched_policy dsched_foo_policy = {
-       .name = "foo",
-
-       .prepare = foo_prepare,
-       .teardown = foo_teardown,
-       .cancel_all = foo_cancel,
-       .bio_queue = foo_queue,
-
-       /* The following are optional */
-       .new_tdio = foo_tdio_ctor,
-       .new_diskctx = foo_diskctx_ctor,
-       .destroy_tdio = foo_tdio_dtor,
-       .destroy_diskctx = foo_diskctx_dtor
-};
-.Ed
-.Pp
-The
-.Fa name
-is the unique identifier of the dsched policy and the name the user
-specifies to set this
-.Nm
-policy.
-.Pp
-The
-.Fa prepare
-callback is called whenever the new
-.Nm
-policy is set for a new disk.
-This can be used to create per disk threads for the
-.Nm
-policy instance.
-Note that any thread created during
-.Fa prepare
-will not have a
-.Ft dsched_thread_ctx
-or
-.Ft dsched_thread_io
-associated with it.
-If this is required because the thread will do I/O, the thread itself
-needs to call
-.Fn dsched_new_policy_thread_tdio .
-.Pp
-The
-.Fa teardown
-callback is called whenever a
-.Nm
-policy is unset/detached from a disk or when a disk is disconnected.
-It should clean up all per-disk resources such as any thread created in
-.Fa prepare .
-The
-.Nm
-framework guarantees that no more calls to any other method such as
-.Fa bio_queue
-will occur once
-.Fa teardown
-has been called.
-.Pp
-The
-.Fa cancel_all
-callback is called immediately before
-.Fa teardown .
-It is required to cancel all
-.Vt bio Ns s
-currently queued or stalled in the
-.Nm
-policy instance for the given disk.
-The
-.Nm
-framework guarantees that no more calls to any other method such as
-.Fa bio_queue
-will occur once
-.Fa cancel_all
-has been called.
-.Pp
-The
-.Fa bio_queue
-callback is called for every
-.Vt bio
-intended for the disk(s) with the given
-.Nm
-policy.
-It needs to either dispatch it, queue it in any other form for later
-dispatch, or return a non-zero return value, in which case the
-.Nm
-framework will dispatch that
-.Vt bio
-directly.
-If the function took care of the
-.Vt bio
-and does not want dsched to dispatch it, 0 must be returned.
-.Pp
-The
-.Fa new_tdio
-callback is called for every
-.Vt dsched_thread_io
-created for a disk with this
-.Nm
-policy.
-Similarly, the
-.Fa destroy_tdio
-callback is called on destruction (release of all references) of the
-.Vt dsched_thread_io .
-These functions don't have to be specified; if they are left out or
-set to
-.Dv NULL
-they simply won't be called.
-.Pp
-The
-.Fa new_diskctx
-callback is called for every
-.Vt dsched_disk_ctx
-created for a disk with this
-.Nm
-policy.
-Similarly, the
-.Fa destroy_diskctx
-callback is called on destruction (release of all references) of the
-.Vt dsched_disk_ctx .
-These functions don't have to be specified; if they are left out or
-set to
-.Dv NULL ,
-they simply won't be called.
-.Pp
-For convenience, the structs
-.Vt dsched_thread_io
-and
-.Vt dsched_disk_ctx
-are allocated with plenty of spare space, so that each policy can extend
-these, for example as follows:
-.Bd -literal
-struct foo_thread_io {
-       struct dsched_thread_io head;
-       int foo;
-       int bar;
-};
-
-struct foo_disk_ctx {
-       struct dsched_disk_ctx head;
-       int foo;
-       int bar;
-};
-
-CTASSERT(sizeof(struct foo_thread_io) <= DSCHED_THREAD_IO_MAX_SZ);
-CTASSERT(sizeof(struct foo_disk_ctx) <= DSCHED_DISK_CTX_MAX_SZ);
-.Ed
-.Pp
-It is important that the first member of the new struct is one of type
-.Vt dsched_thread_io
-or
-.Vt dsched_disk_ctx ,
-respectively.
-The
-.Fn CTASSERT
-must be used to ensure that the new structs fit into the space provided
-by
-.Nm dsched .
-Not including these asserts can cause serious and difficult to debug
-issues.
-For all the functions described in
-.Sx FUNCTIONS
-that require a
-.Vt dsched_thread_io
-or
-.Vt dsched_disk_ctx ,
-the address of the
-.Fa head
-element should be passed, or alternatively the address of the new struct
-be cast to the right type and that passed.
-.Sh FUNCTIONS
-The
-.Fn DSCHED_POLICY_MODULE
-macro declares a
-.Nm
-policy kernel module.
-.Fa evh
-is the event handler for the module (see
-.Xr DECLARE_MODULE 9
-for more information).
-The event handler is supposed to register a
-.Nm
-policy with
-.Fn dsched_register
-on load and to unregister it using
-.Fn dsched_unregister
-when it is unloaded.
-.Fa version
-is the version number of the module (see
-.Xr MODULE_VERSION 9
-for more information).
-.Pp
-The
-.Fn dsched_strategy_async
-function dispatches a
-.Vt bio Fa bp
-in an asynchronous manner to the disk specified by
-.Fa dp .
-The private data
-.Fa priv
-will be attached to the
-.Vt bio
-and is later retrievable via
-.Fn dsched_get_bio_priv .
-The
-.Vt biodone_t
-routine
-.Fa done
-will be called once the
-.Vt bio
-completes.
-The
-.Fa done
-routine can use
-.Fn dsched_get_disk_priv ,
-.Fn dsched_get_bio_dp
-and
-.Fn dsched_get_bio_priv
-to retrieve the context.
-Since
-.Fn dsched_strategy_async
-also saves the current time (via
-.Fn getmicrotime )
-in
-.Fa bio->bio_caller_info3.tv ,
-the
-.Fa done
-routine can also calculate the time passed from dispatch to completion
-by getting the current time again (via
-.Fn getmicrotime )
-and calculating the timeval difference to the value stored in
-.Fa bio->bio_caller_info3.tv .
-At the end of the
-.Fa done
-routine it needs to call
-.Fn pop_bio
-and
-.Fn biodone
-as for any other
-.Vt biodone_t
-routine.
-.Pp
-The
-.Fn dsched_cancel_bio
-function cancels the
-.Vt bio
-and sets
-.Er ENXIO
-as error on the buf.
-.Pp
-The
-.Fn dsched_strategy_raw
-function simply dispatches the
-.Vt bio
-directly to the disk specified by
-.Fa dp
-using
-.Fn dev_dstrategy .
-.Pp
-The
-.Fn dsched_debug
-function works as a conditional
-.Fn kprintf .
-Depending on the setting of the
-.Va dsched.debug
-.Xr sysctl 8
-variable, the debug info will be shown or not.
-.Pp
-The
-.Fn dsched_register
-function registers the policy described by
-.Fa d_policy
-as a valid
-.Nm
-policy which can then be used as a scheduler policy for the disks.
-If a policy with the given name already exists,
-.Er EEXIST
-is returned (otherwise 0).
-.Pp
-The
-.Fn dsched_unregister
-function unregisters the policy described by
-.Fa d_policy .
-The given
-.Nm
-policy will no longer be valid as a scheduler policy.
-If the given policy is currently in use,
-.Er EBUSY
-will be returned and the policy won't be unregistered; otherwise 0 is returned.
-.Pp
-The
-.Fn DSCHED_THREAD_IO_LOCK
-and
-.Fn DSCHED_THREAD_IO_UNLOCK
-functions lock and unlock a
-.Vt dsched_thread_io
-.Fa tdio ,
-respectively.
-The lock must be held whenever the members
-.Fa queue
-and
-.Fa qlength
-are manipulated to avoid messing up the
-.Vt TAILQ .
-It can also be used to serialize any other access to the derived
-.Vt foo_thread_io
-members.
-.Pp
-The
-.Fn DSCHED_DISK_CTX_LOCK
-and
-.Fn DSCHED_DISK_CTX_UNLOCK
-functions lock and unlock a
-.Vt dsched_disk_ctx
-.Fa diskctx ,
-respectively.
-The lock must be held whenever the member
-.Fa queue
-is manipulated to avoid messing up the
-.Vt TAILQ .
-It can also be used to serialize any other access to the derived
-.Vt foo_disk_ctx
-members.
-.Pp
-The
-.Fn dsched_thread_io_ref
-and
-.Fn dsched_thread_io_unref
-functions increase and decrease the reference count on a
-.Vt dsched_thread_io
-.Fa tdio ,
-respectively.
-Whenever the reference count drops to 0, the
-.Fa tdio
-will be released.
-Be aware that it is possible that the
-.Nm
-framework holds references on the
-.Fa tdio ,
-too, so it can be that the object is not freed when all
-references are dropped.
-.Pp
-The
-.Fn dsched_disk_ctx_ref
-and
-.Fn dsched_disk_ctx_unref
-functions increase and decrease the reference count on a
-.Vt dsched_disk_ctx
-.Fa diskctx ,
-respectively.
-Whenever the reference count drops to 0, the
-.Fa diskctx
-will be released.
-Be aware that it is possible that the
-.Nm
-framework holds references on the
-.Fa diskctx ,
-too, so it can be that the object is not freed when all
-references are dropped.
-.Pp
-The
-.Fn dsched_get_bio_dp ,
-.Fn dsched_get_disk_priv
-and
-.Fn dsched_get_bio_priv
-are intended for use in the
-.Vt biodone_t
-routine specified in the call to
-.Fn dsched_strategy_async .
-.Fn dsched_get_bio_dp
-retrieves the
-.Vt struct disk
-associated with the
-.Vt bio .
-This can then be used to retrieve the
-.Vt struct dsched_disk_ctx
-via
-.Fn dsched_get_disk_priv .
-The
-.Fn dsched_get_bio_priv
-function returns the private data associated with the
-.Fa bio
-on the call to
-.Fn dsched_strategy_async .
-.Pp
-The
-.Fn dsched_new_policy_thread_tdio
-function must be called from any thread created within the
-.Fa prepare
-method that will perform I/O, since these won't have a
-.Vt dsched_thread_io
-associated with them.
-.Sh FILES
-The uncontended path of the
-.Nm
-implementation is in
-.Pa /sys/kern/kern_dsched.c .
-The data structures are in
-.Pa /sys/sys/dsched.h .
-.Sh SEE ALSO
-.Xr dsched 4
-.Sh HISTORY
-The
-.Nm
-framework first appeared in
-.Dx 2.5 .
-.Sh AUTHORS
-The
-.Nm
-framework was written by
-.An Alex Hornung .
index 3949865..5fb0dbf 100644 (file)
@@ -699,3 +699,4 @@ SYSVSEM                     opt_dontuse.h
 SYSVSHM                        opt_dontuse.h
 P1003_1B               opt_dontuse.h
 _KPOSIX_VERSION                opt_dontuse.h
+DSCHED_FQ              opt_dontuse.h