CVSROOT: /cvs
Module name: src
Changes by: [email protected] 2017/07/12 05:13:22
Modified files:
sys/kern : vfs_bio.c
Log message:
Invalidate read-ahead buffers when read short
Buffercache performs read-ahead for cluster reads by extending
the length of an original read operation to the MAXPHYS (64k).
Upon I/O completion, the length is trimmed and the buffer is
returned to the filesystem and the remaining data is cached.
However, under certain circumstances, the underlying hardware
may fail to do a complete I/O operation and return with a non-
zero value of the residual length (i.e. data that wasn't read).
The residual length may exceed the size of an original request
and must be re-adjusted to uphold the contract with the caller,
e.g. the filesystem. At the same time, read-ahead buffers that
cover chunks of memory corresponding to the residual length
must be invalidated and not cached.
Discussed at length during d2k17, ok tedu