Re: [PATCH 2/2] fs: generic_file_buffered_read() now uses find_get_pages_contig

From: Kent Overstreet
Date: Tue Jun 09 2020 - 21:08:07 EST


On Tue, Jun 09, 2020 at 05:47:53PM -0700, Matthew Wilcox wrote:
> On Tue, Jun 09, 2020 at 08:10:36PM -0400, Kent Overstreet wrote:
> > @@ -2275,83 +2287,93 @@ static ssize_t generic_file_buffered_read(struct kiocb *iocb,
> > struct iov_iter *iter, ssize_t written)
> > {
> > struct file *filp = iocb->ki_filp;
> > + struct file_ra_state *ra = &filp->f_ra;
> > struct address_space *mapping = filp->f_mapping;
> > struct inode *inode = mapping->host;
> > - struct file_ra_state *ra = &filp->f_ra;
> > size_t orig_count = iov_iter_count(iter);
> > - pgoff_t last_index;
> > - int error = 0;
> > + struct page *pages[64];
>
> That's 512 bytes which seems like a lot of stack space. Would 16 be
> enough to see a significant fraction of the benefit?

Ah right, we do call into fs code for readahead from here. I'll switch it to
kmalloc the page array if it's more than 16.