]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
xfs: move invalidate_kernel_vmap_range to xfs_buf_ioend
authorChristoph Hellwig <hch@lst.de>
Mon, 13 Jan 2025 14:12:14 +0000 (15:12 +0100)
committerCarlos Maiolino <cem@kernel.org>
Tue, 14 Jan 2025 10:38:15 +0000 (11:38 +0100)
Invalidating cache lines can be fairly expensive, so don't do it
in interrupt context.  Note that in practice very few setup will
actually do anything here as virtually indexed caches are rather
uncommon, but we might as well move the call to the proper place
while touching this area.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Acked-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
fs/xfs/xfs_buf.c

index 541e56b13869980c329f52d30e7ccd771a55e122..e0a34c2aaaaf1cc604590c7ba096f7ba36e30c79 100644 (file)
@@ -1363,6 +1363,9 @@ xfs_buf_ioend(
        trace_xfs_buf_iodone(bp, _RET_IP_);
 
        if (bp->b_flags & XBF_READ) {
+               if (!bp->b_error && xfs_buf_is_vmapped(bp))
+                       invalidate_kernel_vmap_range(bp->b_addr,
+                                       xfs_buf_vmap_len(bp));
                if (!bp->b_error && bp->b_ops)
                        bp->b_ops->verify_read(bp);
                if (!bp->b_error)
@@ -1492,9 +1495,6 @@ xfs_buf_bio_end_io(
                 XFS_TEST_ERROR(false, bp->b_mount, XFS_ERRTAG_BUF_IOERROR))
                xfs_buf_ioerror(bp, -EIO);
 
-       if (!bp->b_error && xfs_buf_is_vmapped(bp) && (bp->b_flags & XBF_READ))
-               invalidate_kernel_vmap_range(bp->b_addr, xfs_buf_vmap_len(bp));
-
        xfs_buf_ioend_async(bp);
        bio_put(bio);
 }