git: kernel - Add KVABIO API (ability to avoid global TLB syncs)
Matthew Dillon
dillon at crater.dragonflybsd.org
Mon Oct 16 11:30:33 PDT 2017
commit d32579c347bf204d876d57909d5ade2b1b65d2b0
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Sun Oct 1 19:28:56 2017 -0700
kernel - Add KVABIO API (ability to avoid global TLB syncs)
* Add KVABIO support. This works as follows:
(1) Devices can set D_KVABIO in the ops flags to specify that the
device strategy routine supports the API.
passed to
The dev_dstrategy() wrapper will fully synchronize the buffer to
all cpus prior to dispatch if the device flag is not set.
(2) Vnodes can set VKVABIO in v_flag to indicate that VOP_STRATEGY
supports the API.
The vn_strategy() wrapper will fully synchronize the buffer to
all cpus prior to dispatch if the vnode flag is not set.
(3) GETBLK_KVABIO and FINDBLK_KVABIO flags added to allow buffer
cache consumers (primarily filesystem code) to indicate that
they support the API. B_KVABIO flag added to struct buf.
This occurs on a per-acquisition basis. For example, a standard
bread() will clear the flag, indicating no support. A bread_kvabio()
will set the flag, indicating support.
* The getblk(), getcacheblk(), and cluster*() interfaces set the flag for
any I/O they dispatch, and then adjust the flag as necessary upon return
according to the caller's wishes.
Summary of changes:
sys/kern/kern_device.c | 38 +++++++++--
sys/kern/vfs_bio.c | 176 ++++++++++++++++++++++++++++++++++++++++++-------
sys/kern/vfs_cluster.c | 45 ++++++++-----
sys/sys/buf.h | 28 ++++++--
sys/sys/buf2.h | 11 +++-
sys/sys/device.h | 1 +
sys/sys/vnode.h | 2 +-
sys/vm/vm_pager.c | 5 +-
8 files changed, 247 insertions(+), 59 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/d32579c347bf204d876d57909d5ade2b1b65d2b0
--
DragonFly BSD source repository
More information about the Commits
mailing list