123456789101112131415161718192021222324252627282930313233343536373839 |
- .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.
|