ref: fe1eb39db7ae6904924f3ab1f6f9b34416f2eb1b
dir: /sys/doc/fs/p5/
.SH The read-ahead processes .PP There are a set of file system processes, .CW rah , that wait for messages consisting of a device and block address. When a message comes in, the process reads the specified block from the device. This is done by calling .CW getbuf and .CW putbuf . The purpose of this is the hope that these blocks will be used later and that they will reside in the buffer cache long enough not to be discarded before they are used. .PP The messages to the read-ahead processes are generated by the server processes. The server processes maintain a relative block mark in every open file. Whenever an open file reads that relative block, the next 110 block addresses of the file are sent to the read-ahead processes and the relative block mark is advanced by 100. The initial relative block is set to 1. If the file is opened and only a few bytes are read, then no anticipating reads are performed since the relative block mark is set to 1 and only block offset 0 is read. This is to prevent some fairly common action such as .Ex file * .Ee from swamping the file system with read-ahead requests that will never be used.