xfs: clean up buffer allocation in xlog_do_recovery_pass
authorChristoph Hellwig <hch@lst.de>
Tue, 30 Apr 2024 04:07:56 +0000 (06:07 +0200)
committerChandan Babu R <chandanbabu@kernel.org>
Fri, 3 May 2024 05:40:17 +0000 (11:10 +0530)
Merge the initial xlog_alloc_buffer calls, and pass the variable
designating the length that is initialized to 1 above instead of passing
the open coded 1 directly.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: "Darrick J. Wong" <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
fs/xfs/xfs_log_recover.c

index bb8957927c3c2e7f7ec1f779514c8479ef8108cf..4fe627991e86539e7c64e9479739eaee06afb759 100644 (file)
@@ -3010,6 +3010,10 @@ xlog_do_recovery_pass(
        for (i = 0; i < XLOG_RHASH_SIZE; i++)
                INIT_HLIST_HEAD(&rhash[i]);
 
+       hbp = xlog_alloc_buffer(log, hblks);
+       if (!hbp)
+               return -ENOMEM;
+
        /*
         * Read the header of the tail block and get the iclog buffer size from
         * h_size.  Use this to tell how many sectors make up the log header.
@@ -3020,10 +3024,6 @@ xlog_do_recovery_pass(
                 * iclog header and extract the header size from it.  Get a
                 * new hbp that is the correct size.
                 */
-               hbp = xlog_alloc_buffer(log, 1);
-               if (!hbp)
-                       return -ENOMEM;
-
                error = xlog_bread(log, tail_blk, 1, hbp, &offset);
                if (error)
                        goto bread_err1;
@@ -3067,16 +3067,15 @@ xlog_do_recovery_pass(
                        if (hblks > 1) {
                                kvfree(hbp);
                                hbp = xlog_alloc_buffer(log, hblks);
+                               if (!hbp)
+                                       return -ENOMEM;
                        }
                }
        } else {
                ASSERT(log->l_sectBBsize == 1);
-               hbp = xlog_alloc_buffer(log, 1);
                h_size = XLOG_BIG_RECORD_BSIZE;
        }
 
-       if (!hbp)
-               return -ENOMEM;
        dbp = xlog_alloc_buffer(log, BTOBB(h_size));
        if (!dbp) {
                kvfree(hbp);