xfs: simplify the b_page_count calculation
authorChristoph Hellwig <hch@lst.de>
Mon, 7 Jun 2021 01:50:00 +0000 (11:50 +1000)
committerDave Chinner <david@fromorbit.com>
Mon, 7 Jun 2021 01:50:00 +0000 (11:50 +1000)
Ever since we stopped using the Linux page cache to back XFS buffers
there is no need to take the start sector into account for
calculating the number of pages in a buffer, as the data always
start from the beginning of the buffer.

Signed-off-by: Christoph Hellwig <hch@lst.de>
[dgc: modified to suit this series]
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
fs/xfs/xfs_buf.c

index f901a74d6176486ab80c9fbb84c738260f3bada2..5c6a7140d28de36712c96d5754b143f06bd8b4dd 100644 (file)
@@ -348,14 +348,13 @@ xfs_buf_alloc_kmem(
 static int
 xfs_buf_alloc_pages(
        struct xfs_buf  *bp,
-       uint            page_count,
        xfs_buf_flags_t flags)
 {
        gfp_t           gfp_mask = xb_to_gfp(flags);
        long            filled = 0;
 
        /* Make sure that we have a page list */
-       bp->b_page_count = page_count;
+       bp->b_page_count = DIV_ROUND_UP(BBTOB(bp->b_length), PAGE_SIZE);
        if (bp->b_page_count <= XB_PAGES) {
                bp->b_pages = bp->b_page_array;
        } else {
@@ -409,7 +408,6 @@ xfs_buf_allocate_memory(
        uint                    flags)
 {
        size_t                  size;
-       xfs_off_t               start, end;
        int                     error;
 
        /*
@@ -424,11 +422,7 @@ xfs_buf_allocate_memory(
                if (!error)
                        return 0;
        }
-
-       start = BBTOB(bp->b_maps[0].bm_bn) >> PAGE_SHIFT;
-       end = (BBTOB(bp->b_maps[0].bm_bn + bp->b_length) + PAGE_SIZE - 1)
-                                                               >> PAGE_SHIFT;
-       return xfs_buf_alloc_pages(bp, end - start, flags);
+       return xfs_buf_alloc_pages(bp, flags);
 }
 
 /*
@@ -922,7 +916,6 @@ xfs_buf_get_uncached(
        int                     flags,
        struct xfs_buf          **bpp)
 {
-       unsigned long           page_count;
        int                     error;
        struct xfs_buf          *bp;
        DEFINE_SINGLE_BUF_MAP(map, XFS_BUF_DADDR_NULL, numblks);
@@ -934,8 +927,7 @@ xfs_buf_get_uncached(
        if (error)
                return error;
 
-       page_count = PAGE_ALIGN(numblks << BBSHIFT) >> PAGE_SHIFT;
-       error = xfs_buf_alloc_pages(bp, page_count, flags);
+       error = xfs_buf_alloc_pages(bp, flags);
        if (error)
                goto fail_free_buf;