From: Christoph Hellwig Date: Mon, 10 Mar 2025 13:19:05 +0000 (+0100) Subject: xfs: add a fast path to xfs_buf_zero when b_addr is set X-Git-Tag: v6.15-rc1~149^2~6^2~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f2a3717a74c2cf01e29ea3aba355e171eb0d5f5f;p=thirdparty%2Flinux.git xfs: add a fast path to xfs_buf_zero when b_addr is set No need to walk the page list if bp->b_addr is valid. That also means b_offset doesn't need to be taken into account in the unmapped loop as b_offset is only set for kmem backed buffers which are always mapped. Signed-off-by: Christoph Hellwig Reviewed-by: Darrick J. Wong Signed-off-by: Carlos Maiolino --- diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c index 5d560e9073f42..ba0bdff3ad574 100644 --- a/fs/xfs/xfs_buf.c +++ b/fs/xfs/xfs_buf.c @@ -1633,13 +1633,18 @@ xfs_buf_zero( { size_t bend; + if (bp->b_addr) { + memset(bp->b_addr + boff, 0, bsize); + return; + } + bend = boff + bsize; while (boff < bend) { struct page *page; int page_index, page_offset, csize; - page_index = (boff + bp->b_offset) >> PAGE_SHIFT; - page_offset = (boff + bp->b_offset) & ~PAGE_MASK; + page_index = boff >> PAGE_SHIFT; + page_offset = boff & ~PAGE_MASK; page = bp->b_pages[page_index]; csize = min_t(size_t, PAGE_SIZE - page_offset, BBTOB(bp->b_length) - boff);