Commit ead360c5 authored by Dave Chinner's avatar Dave Chinner Committed by Ben Myers
Browse files

xfs: fix incorrect b_offset initialisation

Because we no longer use the page cache for buffering, there is no
direct block number to page offset relationship anymore.
xfs_buf_get_pages is still setting up b_offset as if there was some
relationship, and that is leading to incorrectly setting up
*uncached* buffers that don't overwrite b_offset once they've had
pages allocated.

For cached buffers, the first block of the buffer is always at offset
zero into the allocated memory. This is true for sub-page sized
buffers, as well as for multiple-page buffers.

For uncached buffers, b_offset is only non-zero when we are
associating specific memory to the buffers, and that is set
correctly by the code setting up the buffer.

Hence remove the setting of b_offset in xfs_buf_get_pages, because
it is now always the wrong thing to do.
Signed-off-by: default avatarDave Chinner <>
Reviewed-by: default avatarChristoph Hellwig <>
Reviewed-by: default avatarMark Tinguely <>
Signed-off-by: default avatarBen Myers <>
parent 0e95f19a
......@@ -227,7 +227,6 @@ _xfs_buf_get_pages(
/* Make sure that we have a page list */
if (bp->b_pages == NULL) {
bp->b_offset = xfs_buf_poff(bp->b_file_offset);
bp->b_page_count = page_count;
if (page_count <= XB_PAGES) {
bp->b_pages = bp->b_page_array;
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment