ref: d6a91e0ae47b4e1df9a9783c49666e2a7357e277
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.