Make sure that the address_space is capable of performing the readahead before going in and allocating the pages. mm/readahead.c | 3 +++ 1 files changed, 3 insertions(+) diff -puN mm/readahead.c~handle-no-readpage-2 mm/readahead.c --- 25/mm/readahead.c~handle-no-readpage-2 2003-06-26 17:33:07.000000000 -0700 +++ 25-akpm/mm/readahead.c 2003-06-26 17:33:07.000000000 -0700 @@ -260,6 +260,9 @@ int do_page_cache_readahead(struct addre { int ret = 0; + if (unlikely(!mapping->a_ops->readpage && !mapping->a_ops->readpages)) + return -EINVAL; + while (nr_to_read) { int err; _