CIFS is using these. Given that the readpages() address_space op is supposed to add the pages to pagecache, it makes sense to make these functions available to modules. I can't say that I put a lot of though into the readpages API. It was designed as just enough functionality to be able to stuff a bunch of readahead pages into a single BIO. The only reason I made it an a_op at all was because we have toi enter the fs to pick up the ->get_block callback's address. But a couple of filesystems seem to be making use of it now. Reiser4 will need access at the do_page_cache_readahead() level too. ksyms.c | 2 ++ filemap.c | 1 + 2 files changed, 3 insertions(+) diff -puN mm/filemap.c~cifs-exports mm/filemap.c --- 25/mm/filemap.c~cifs-exports 2003-02-16 19:51:20.000000000 -0800 +++ 25-akpm/mm/filemap.c 2003-02-16 19:51:20.000000000 -0800 @@ -225,6 +225,7 @@ int add_to_page_cache(struct page *page, } return error; } +EXPORT_SYMBOL(add_to_page_cache); int add_to_page_cache_lru(struct page *page, struct address_space *mapping, pgoff_t offset, int gfp_mask) diff -puN kernel/ksyms.c~cifs-exports kernel/ksyms.c --- 25/kernel/ksyms.c~cifs-exports 2003-02-16 19:51:20.000000000 -0800 +++ 25-akpm/kernel/ksyms.c 2003-02-16 19:51:40.000000000 -0800 @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -80,6 +81,7 @@ EXPORT_SYMBOL(__alloc_pages); EXPORT_SYMBOL(__get_free_pages); EXPORT_SYMBOL(get_zeroed_page); EXPORT_SYMBOL(__page_cache_release); +EXPORT_SYMBOL(__pagevec_lru_add); EXPORT_SYMBOL(__free_pages); EXPORT_SYMBOL(free_pages); EXPORT_SYMBOL(num_physpages); _