]> www.infradead.org Git - users/hch/xfs.git/commitdiff
xfs: move in-memory buftarg handling out of _xfs_buf_ioapply
authorChristoph Hellwig <hch@lst.de>
Sat, 28 Dec 2024 10:08:56 +0000 (10:08 +0000)
committerChristoph Hellwig <hch@lst.de>
Mon, 13 Jan 2025 04:17:36 +0000 (05:17 +0100)
No I/O to apply for in-memory buffers, so skip the function call
entirely.  Clean up the b_io_error initialization logic to allow
for this.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
fs/xfs/xfs_buf.c

index 3a8eb8f798c51315fb3afd8b1fc0af04a7fb2aee..d8e2f6e3197cc6f34d06b8e7bc0a57ebb8031ca2 100644 (file)
@@ -1605,12 +1605,6 @@ _xfs_buf_ioapply(
        int             size;
        int             i;
 
-       /*
-        * Make sure we capture only current IO errors rather than stale errors
-        * left over from previous use of the buffer (e.g. failed readahead).
-        */
-       bp->b_error = 0;
-
        if (bp->b_flags & XBF_WRITE) {
                op = REQ_OP_WRITE;
        } else {
@@ -1622,10 +1616,6 @@ _xfs_buf_ioapply(
        /* we only use the buffer cache for meta-data */
        op |= REQ_META;
 
-       /* in-memory targets are directly mapped, no IO required. */
-       if (xfs_buftarg_is_mem(bp->b_target))
-               return;
-
        /*
         * Walk all the vectors issuing IO on them. Set up the initial offset
         * into the buffer and the desired IO size before we start -
@@ -1735,7 +1725,11 @@ xfs_buf_submit(
        if (bp->b_flags & XBF_WRITE)
                xfs_buf_wait_unpin(bp);
 
-       /* clear the internal error state to avoid spurious errors */
+       /*
+        * Make sure we capture only current IO errors rather than stale errors
+        * left over from previous use of the buffer (e.g. failed readahead).
+        */
+       bp->b_error = 0;
        bp->b_io_error = 0;
 
        /*
@@ -1752,6 +1746,10 @@ xfs_buf_submit(
                goto done;
        }
 
+       /* In-memory targets are directly mapped, no I/O required. */
+       if (xfs_buftarg_is_mem(bp->b_target))
+               goto done;
+
        _xfs_buf_ioapply(bp);
 
 done: