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?