xfs: remove ->b_offset handling for page backed buffers
authorChristoph Hellwig <hch@lst.de>
Mon, 7 Jun 2021 01:49:50 +0000 (11:49 +1000)
committerDave Chinner <david@fromorbit.com>
Mon, 7 Jun 2021 01:49:50 +0000 (11:49 +1000)
->b_offset can only be non-zero for _XBF_KMEM backed buffers, so
remove all code dealing with it for page backed buffers.

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

index d02edb683cfd9d9491d87f0040dd8f52ddc29a03..f901a74d6176486ab80c9fbb84c738260f3bada2 100644 (file)
@@ -79,7 +79,7 @@ static inline int
 xfs_buf_vmap_len(
        struct xfs_buf  *bp)
 {
-       return (bp->b_page_count * PAGE_SIZE) - bp->b_offset;
+       return (bp->b_page_count * PAGE_SIZE);
 }
 
 /*
@@ -281,7 +281,7 @@ xfs_buf_free_pages(
        ASSERT(bp->b_flags & _XBF_PAGES);
 
        if (xfs_buf_is_vmapped(bp))
-               vm_unmap_ram(bp->b_addr - bp->b_offset, bp->b_page_count);
+               vm_unmap_ram(bp->b_addr, bp->b_page_count);
 
        for (i = 0; i < bp->b_page_count; i++) {
                if (bp->b_pages[i])
@@ -442,7 +442,7 @@ _xfs_buf_map_pages(
        ASSERT(bp->b_flags & _XBF_PAGES);
        if (bp->b_page_count == 1) {
                /* A single page buffer is always mappable */
-               bp->b_addr = page_address(bp->b_pages[0]) + bp->b_offset;
+               bp->b_addr = page_address(bp->b_pages[0]);
        } else if (flags & XBF_UNMAPPED) {
                bp->b_addr = NULL;
        } else {
@@ -469,7 +469,6 @@ _xfs_buf_map_pages(
 
                if (!bp->b_addr)
                        return -ENOMEM;
-               bp->b_addr += bp->b_offset;
        }
 
        return 0;
@@ -1680,7 +1679,6 @@ xfs_buf_offset(
        if (bp->b_addr)
                return bp->b_addr + offset;
 
-       offset += bp->b_offset;
        page = bp->b_pages[offset >> PAGE_SHIFT];
        return page_address(page) + (offset & (PAGE_SIZE-1));
 }
index 459ca34f26f58870d584fecb82e548bbbca6b2d0..464dc548fa23839e3b0562e304a17fd9ec12dd79 100644 (file)
@@ -167,7 +167,8 @@ struct xfs_buf {
        atomic_t                b_pin_count;    /* pin count */
        atomic_t                b_io_remaining; /* #outstanding I/O requests */
        unsigned int            b_page_count;   /* size of page array */
-       unsigned int            b_offset;       /* page offset in first page */
+       unsigned int            b_offset;       /* page offset of b_addr,
+                                                  only for _XBF_KMEM buffers */
        int                     b_error;        /* error code on I/O */
 
        /*