summaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_buf.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2021-06-07 11:50:00 +1000
committerDave Chinner <david@fromorbit.com>2021-06-07 11:50:00 +1000
commit934d1076bb2c5bbb3d5b0e3892b208d1f537949d (patch)
tree235ff4b15a0d321cc8ecb18ba24cb252cdb12916 /fs/xfs/xfs_buf.c
parent54cd3aa6f8102f4648190fc93eb5dd8603de9b52 (diff)
downloadlinux-stable-934d1076bb2c5bbb3d5b0e3892b208d1f537949d.tar.gz
linux-stable-934d1076bb2c5bbb3d5b0e3892b208d1f537949d.tar.bz2
linux-stable-934d1076bb2c5bbb3d5b0e3892b208d1f537949d.zip
xfs: simplify the b_page_count calculation
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>
Diffstat (limited to 'fs/xfs/xfs_buf.c')
-rw-r--r--fs/xfs/xfs_buf.c14
1 files changed, 3 insertions, 11 deletions
diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c
index f901a74d6176..5c6a7140d28d 100644
--- a/fs/xfs/xfs_buf.c
+++ b/fs/xfs/xfs_buf.c
@@ -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;