readahead() which is Linux-only vs. posix_fadvise()

David Collier-Brown davec-b at
Thu May 10 12:59:03 GMT 2007

   And even that isn't extant on Solaris, so both calls are no-ops.

   In general, you will find most filesystems try to do coalescence on
writes and readahed on reads, irrespective of vendor.
On solaris this is controlled by the -C option on newfs, and affected
by the -a (maxcontig) option to newfs/tunefs.


derrell at wrote:
> As I was working on a solution to the fact that my system provides the
> readahead() function but not a declaration for that function, I discovered
> that readahead() is documented as:
>        The  readahead()  system  call is Linux specific, and its use should be
>        avoided in portable applications.
> Given this, it is possible that different Linux versions may conceivably use
> slightly different prototypes for readahead(), so providing a declaration in
> lib/replace is somewhat dangerous.
> In researching this, I discovered what appears to be a POSIX replacement.  It
> looks like readahead is equivalent to posix_fadvise(..., POSIX_FADV_WILLNEED).
> The only place that readahead() is used, I think, is in vfs_readahead.c.
> It might make sense for the maintainer of this module to look into using
> posix_fadvise() instead of readahead().
> Cheers,
> Derrell

David Collier-Brown,         | Always do right. This will gratify
System Programmer and Author | some people and astonish the rest
davecb at           |                      -- Mark Twain
(416) 223-5943

More information about the samba-technical mailing list