]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
jbd2: Convert journal commit to bh_submit()
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Thu, 28 May 2026 17:31:29 +0000 (18:31 +0100)
committerChristian Brauner <brauner@kernel.org>
Thu, 4 Jun 2026 08:28:08 +0000 (10:28 +0200)
Avoid an extra indirect function call by using bh_submit()
instead of submit_bh() in journal_submit_commit_record()
and jbd2_journal_commit_transaction().  These both use
journal_end_buffer_io_sync(), so it's more straightforward to do them
both at once.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Link: https://patch.msgid.link/20260528173150.1093780-17-willy@infradead.org
Acked-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Jan Kara <jack@suse.cz>
Cc: linux-ext4@vger.kernel.org
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
fs/jbd2/commit.c

index 8cf61e7185c4419cd0b4a036cfdf6e1379cdff99..4e91593d27e5d0a2d4715ae320a150e6c0a7ee66 100644 (file)
 /*
  * IO end handler for temporary buffer_heads handling writes to the journal.
  */
-static void journal_end_buffer_io_sync(struct buffer_head *bh, int uptodate)
+static void journal_end_buffer_io_sync(struct bio *bio)
 {
+       struct buffer_head *bh;
+       bool uptodate = bio_endio_bh(bio, &bh);
        struct buffer_head *orig_bh = bh->b_private;
 
        BUFFER_TRACE(bh, "");
@@ -147,13 +149,12 @@ static int journal_submit_commit_record(journal_t *journal,
        lock_buffer(bh);
        clear_buffer_dirty(bh);
        set_buffer_uptodate(bh);
-       bh->b_end_io = journal_end_buffer_io_sync;
 
        if (journal->j_flags & JBD2_BARRIER &&
            !jbd2_has_feature_async_commit(journal))
                write_flags |= REQ_PREFLUSH | REQ_FUA;
 
-       submit_bh(write_flags, bh);
+       bh_submit(bh, write_flags, journal_end_buffer_io_sync);
        *cbh = bh;
        return 0;
 }
@@ -751,9 +752,9 @@ start_journal_io:
                                lock_buffer(bh);
                                clear_buffer_dirty(bh);
                                set_buffer_uptodate(bh);
-                               bh->b_end_io = journal_end_buffer_io_sync;
-                               submit_bh(REQ_OP_WRITE | JBD2_JOURNAL_REQ_FLAGS,
-                                         bh);
+                               bh_submit(bh,
+                                       REQ_OP_WRITE | JBD2_JOURNAL_REQ_FLAGS,
+                                       journal_end_buffer_io_sync);
                        }
                        cond_resched();