The only caller of ->readpages() is from read-ahead, yet we don't submit IO flagged with REQ_RAHEAD. This means we don't see it in blktrace, for instance, which is a shame. Additionally, it's preventing further functional changes in the block layer for deadling with read-ahead more intelligently. We already make assumptions about ->readpages() just being for read-ahead in the mpage implementation, using readahead_gfp_mask(mapping) as out GFP mask of choice. This small series fixes up mpage_readpages() to submit with REQ_RAHEAD, which takes care of file systems using mpage_readpages(). The first patch is a prep patch, that makes do_mpage_readpage() take an argument structure. Changes since v3: - Add comments on ->readpages() purely being read-ahead - Rebase on current -git Changes since v2: - Get rid of 'gfp' passing once we have is_readahead - Pack struct better, makes it 8 bytes smaller. Changes since v1: - Fix ext4_mpage_readpages() also being used for regular reads - Add prep patch with struct arguments for do_mpage_readpage() fs/btrfs/extent_io.c | 2 +- fs/ext4/ext4.h | 2 +- fs/ext4/inode.c | 5 +- fs/ext4/readpage.c | 5 +- fs/f2fs/data.c | 5 ++ fs/mpage.c | 115 ++++++++++++++++++++++++------------------- include/linux/fs.h | 4 ++ 7 files changed, 80 insertions(+), 58 deletions(-) -- Jens Axboe