Commit 934d1076 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Dave Chinner
Browse files

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: default avatarChristoph Hellwig <hch@lst.de>
[dgc: modified to suit this series]
Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
parent 54cd3aa6
Loading
Loading
Loading
Loading
+3 −11
Original line number Diff line number Diff line
@@ -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;