There is no good reason why xfs_buf_get_uncached should fail on the first allocation failure, so make it behave the same as the normal xfs_buf_get_map path. Signed-off-by: Christoph Hellwig <hch@xxxxxx> --- fs/xfs/xfs_buf.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c index b3519a43759235..a1295b5b6f0ca6 100644 --- a/fs/xfs/xfs_buf.c +++ b/fs/xfs/xfs_buf.c @@ -351,8 +351,7 @@ xfs_buf_alloc_slab( static int xfs_buf_alloc_pages( struct xfs_buf *bp, - xfs_buf_flags_t flags, - bool fail_fast) + xfs_buf_flags_t flags) { gfp_t gfp_mask = __GFP_NOWARN; int i; @@ -384,7 +383,7 @@ xfs_buf_alloc_pages( retry: page = alloc_page(gfp_mask); if (unlikely(!page)) { - if (fail_fast) { + if (flags & XBF_READ_AHEAD) { bp->b_page_count = i; xfs_buf_free_pages(bp); return -ENOMEM; @@ -682,8 +681,7 @@ xfs_buf_get_map( */ if (BBTOB(new_bp->b_length) >= PAGE_SIZE || xfs_buf_alloc_slab(new_bp, flags) < 0) { - error = xfs_buf_alloc_pages(new_bp, flags, - flags & XBF_READ_AHEAD); + error = xfs_buf_alloc_pages(new_bp, flags); if (error) goto out_free_buf; } @@ -924,7 +922,7 @@ xfs_buf_get_uncached( if (error) goto fail; - error = xfs_buf_alloc_pages(bp, flags, true); + error = xfs_buf_alloc_pages(bp, flags); if (error) goto fail_free_buf; -- 2.30.2