git: kernel - Fix some clustering issues

Matthew Dillon dillon at
Wed Jun 8 16:01:27 PDT 2016

commit cb1fa82f72b10f6f4cdab274c21edf668dd4d068
Author: Matthew Dillon <dillon at>
Date:   Wed Jun 8 15:53:31 2016 -0700

    kernel - Fix some clustering issues
    * Change B_RAM functionality.  We were previously setting B_RAM
      on the last async buffer and doing some cruft to probe ahead.
      Instead, set B_RAM in the middle and use a simple heuristic to
      estimate where to pick-up the read-ahead again.
    * Clean-up the read-ahead.  When the caller of cluster_read() asks for
      read-ahead, we do the read-ahead whether or not BMAP says it is
      contiguous.  All a failed BMAP does now is prevent cluster_rbuild()
      from getting called (that is, it doesn't try to gang multiple buffers
      When thinking about this, the logical buffer cache sequential heuristic
      is telling us that userland is going to read the data, so why stop and
      then have to stall on an I/O read later when userland actually reads
      the data?
    * This will improve pipelining for both hammer1 and hammer2.

Summary of changes:
 sys/kern/vfs_bio.c     |   9 +-
 sys/kern/vfs_cluster.c | 254 ++++++++++++++++++++++++++++++++-----------------
 2 files changed, 175 insertions(+), 88 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list