git: DragonFly_RELEASE_5_8 kernel - Improve tmpfs support

Matthew Dillon dillon at crater.dragonflybsd.org
Thu Apr 23 19:03:55 PDT 2020


commit 33930dfcf0aab8a1475a9e8edcfcea28e6a2dfbb
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date:   Wed Feb 12 19:39:12 2020 -0800

    kernel - Improve tmpfs support
    
    * When a file in tmpfs is truncated to a size that is not on a block
      boundary, or extended (but not written) to a size that is not on a
      block boundary, the nvextendbuf() and nvtruncbuf() functions must
      modify the contents of the straddling buffer and bdwrite().
    
      However, a bdwrite() for a tmpfs buffer will result in a dirty buffer
      cache buffer and likely force it to be cycled out to swap relatively
      soon under a modest load.  This is not desirable if there is no memory
      pressure present to force it out.
    
      Tmpfs almost always uses buwrite() in order to leave the buffer 'clean'
      (the underlying VM pages are dirtied instead), to prevent unecessary
      paging of tmpfs data to swap when the buffer gets recycled or the vnode
      cycles out.
    
    * Add support for calling buwrite() in these functions by changing the
      'trivial' boolean into a flags variable.
    
    * Tmpfs now passes the appropriate flag, preventing the undesirable
      behavior.

Summary of changes:
 sys/kern/vfs_vm.c             | 24 +++++++++++++---------
 sys/sys/vnode.h               | 10 ++++++++--
 sys/vfs/hammer/hammer_vnops.c |  2 +-
 sys/vfs/nfs/nfs.h             |  2 +-
 sys/vfs/nfs/nfs_bio.c         | 10 +++++-----
 sys/vfs/tmpfs/tmpfs.h         |  1 +
 sys/vfs/tmpfs/tmpfs_subr.c    | 46 ++++++++++++++++++++++++++++++++++++++-----
 sys/vfs/tmpfs/tmpfs_vfsops.c  |  5 ++++-
 sys/vfs/tmpfs/tmpfs_vnops.c   | 28 +++++++++++++++-----------
 sys/vfs/tmpfs/tmpfs_vnops.h   |  1 +
 10 files changed, 93 insertions(+), 36 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/33930dfcf0aab8a1475a9e8edcfcea28e6a2dfbb


-- 
DragonFly BSD source repository


More information about the Commits mailing list