]> git.baikalelectronics.ru Git - kernel.git/commit
mm: use limited read-ahead to satisfy read
authorJens Axboe <axboe@kernel.dk>
Sat, 17 Oct 2020 15:25:52 +0000 (09:25 -0600)
committerJens Axboe <axboe@kernel.dk>
Sat, 17 Oct 2020 19:49:08 +0000 (13:49 -0600)
commitb8db4d2d2a0de322e44e01c07534c3ed92316e19
tree03a41400fc0a67de4ef4f69987e39f39a53c7ba4
parent0b0fdf27e68b6787d0f50c434396b68149eef955
mm: use limited read-ahead to satisfy read

For the case where read-ahead is disabled on the file, or if the cgroup
is congested, ensure that we can at least do 1 page of read-ahead to
make progress on the read in an async fashion. This could potentially be
larger, but it's not needed in terms of functionality, so let's error on
the side of caution as larger counts of pages may run into reclaim
issues (particularly if we're congested).

This makes sure we're not hitting the potentially sync ->readpage() path
for IO that is marked IOCB_WAITQ, which could cause us to block. It also
means we'll use the same path for IO, regardless of whether or not
read-ahead happens to be disabled on the lower level device.

Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Reported-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reported-by: Hao_Xu <haoxu@linux.alibaba.com>
[axboe: updated for new ractl API]
Signed-off-by: Jens Axboe <axboe@kernel.dk>
mm/readahead.c