From 54af9d023eef9a6b82b02ae407532a8d026090b9 Mon Sep 17 00:00:00 2001 From: Sascha Wildner Date: Fri, 13 Nov 2015 22:10:50 +0100 Subject: [PATCH] Some adjustments to the recent dsched removal. * 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 | 22 ++ UPDATING | 7 + share/man/man4/Makefile | 2 - share/man/man4/dsched.4 | 79 ------ share/man/man9/Makefile | 20 -- share/man/man9/dsched.9 | 526 ---------------------------------------- sys/conf/options | 1 + 7 files changed, 30 insertions(+), 627 deletions(-) delete mode 100644 share/man/man4/dsched.4 delete mode 100644 share/man/man9/dsched.9 diff --git a/Makefile_upgrade.inc b/Makefile_upgrade.inc index 991ba83496..2e06e847d8 100644 --- a/Makefile_upgrade.inc +++ b/Makefile_upgrade.inc @@ -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 diff --git a/UPDATING b/UPDATING index 3b02ca7f52..0f6aed61f5 100644 --- a/UPDATING +++ b/UPDATING @@ -12,6 +12,13 @@ + 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 ------------------------------------------------- diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile index b211270bb6..ceba30beac 100644 --- a/share/man/man4/Makefile +++ b/share/man/man4/Makefile @@ -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 index 9bd02f3228..0000000000 --- a/share/man/man4/dsched.4 +++ /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 . diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile index 0b97540e75..cc5c2b4f4b 100644 --- a/share/man/man9/Makefile +++ b/share/man/man9/Makefile @@ -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 index 49ec8016a8..0000000000 --- a/share/man/man9/dsched.9 +++ /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 . diff --git a/sys/conf/options b/sys/conf/options index 394986570f..5fb0dbf948 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -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 -- 2.41.0