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