On Mon, Feb 10, 2020 at 05:03:39PM -0800, Matthew Wilcox wrote:
> From: "Matthew Wilcox (Oracle)" <wi...@infradead.org>
> 
> This replaces ->readpages with a saner interface:
>  - Return void instead of an ignored error code.
>  - Pages are already in the page cache when ->readahead is called.
>  - Implementation looks up the pages in the page cache instead of
>    having them passed in a linked list.
> 
> Signed-off-by: Matthew Wilcox (Oracle) <wi...@infradead.org>

....

>  
> +/*
> + * Readahead is of a block of consecutive pages.
> + */
> +struct readahead_control {
> +     struct file *file;
> +     struct address_space *mapping;
> +/* private: use the readahead_* accessors instead */
> +     pgoff_t start;
> +     unsigned int nr_pages;
> +     unsigned int batch_count;
> +};
> +
> +static inline struct page *readahead_page(struct readahead_control *rac)
> +{
> +     struct page *page;
> +
> +     if (!rac->nr_pages)
> +             return NULL;
> +
> +     page = xa_load(&rac->mapping->i_pages, rac->start);
> +     VM_BUG_ON_PAGE(!PageLocked(page), page);
> +     rac->batch_count = hpage_nr_pages(page);
> +     rac->start += rac->batch_count;

There's no mention of large page support in the patch description
and I don't recall this sort of large page batching in previous
iterations.

This seems like new functionality to me, not directly related to
the initial ->readahead API change? What have I missed?

Cheers,

Dave.
-- 
Dave Chinner
da...@fromorbit.com


Reply via email to