• Jens Axboe's avatar
    mm: use limited read-ahead to satisfy read · 324bcf54
    Jens Axboe authored
    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: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Reported-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
    Reported-by: default avatarHao_Xu <haoxu@linux.alibaba.com>
    [axboe: updated for new ractl API]
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    324bcf54
readahead.c 17.3 KB