CVSROOT:        /cvs
Module name:    src
Changes by:     mi...@cvs.openbsd.org   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

Reply via email to