diff options
| author | Matthew Wilcox (Oracle) <willy@infradead.org> | 2026-05-28 18:31:24 +0100 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2026-06-04 10:28:07 +0200 |
| commit | cc81507980f2d482ed5a0e9e3483306158f06665 (patch) | |
| tree | 67d7fcd17625cc936548f315909ef93ec54ce9d1 | |
| parent | 5059fb945ca895af80506c7a90d46b7308d6f6c5 (diff) | |
| download | linux-cc81507980f2d482ed5a0e9e3483306158f06665.tar.gz linux-cc81507980f2d482ed5a0e9e3483306158f06665.zip | |
buffer: Convert __block_write_full_folio to __bh_submit()
Avoid an extra indirect function call by using __bh_submit() instead
of submit_bh_wbc(). Since there is only one caller of submit_bh_wbc()
left, inline it into submit_bh().
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Link: https://patch.msgid.link/20260528173150.1093780-12-willy@infradead.org
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
| -rw-r--r-- | fs/buffer.c | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/fs/buffer.c b/fs/buffer.c index b668a73d48ec..50bcef50a4a4 100644 --- a/fs/buffer.c +++ b/fs/buffer.c @@ -1271,14 +1271,6 @@ static void __bh_submit(struct buffer_head *bh, blk_opf_t opf, blk_crypto_submit_bio(bio); } -static void submit_bh_wbc(blk_opf_t opf, struct buffer_head *bh, - enum rw_hint write_hint, - struct writeback_control *wbc) -{ - BUG_ON(!bh->b_end_io); - __bh_submit(bh, opf, write_hint, wbc, end_bio_bh_io_sync); -} - /** * bh_submit - Start I/O against a buffer head * @bh: The buffer head to perform I/O on. @@ -1945,7 +1937,7 @@ int __block_write_full_folio(struct inode *inode, struct folio *folio, continue; } if (test_clear_buffer_dirty(bh)) { - mark_buffer_async_write(bh); + set_buffer_async_write(bh); } else { unlock_buffer(bh); } @@ -1961,8 +1953,9 @@ int __block_write_full_folio(struct inode *inode, struct folio *folio, do { struct buffer_head *next = bh->b_this_page; if (buffer_async_write(bh)) { - submit_bh_wbc(REQ_OP_WRITE | write_flags, bh, - inode->i_write_hint, wbc); + __bh_submit(bh, REQ_OP_WRITE | write_flags, + inode->i_write_hint, wbc, + bh_end_async_write); nr_underway++; } bh = next; @@ -1999,7 +1992,7 @@ recover: if (buffer_mapped(bh) && buffer_dirty(bh) && !buffer_delay(bh)) { lock_buffer(bh); - mark_buffer_async_write(bh); + set_buffer_async_write(bh); } else { /* * The buffer may have been set dirty during @@ -2015,8 +2008,9 @@ recover: struct buffer_head *next = bh->b_this_page; if (buffer_async_write(bh)) { clear_buffer_dirty(bh); - submit_bh_wbc(REQ_OP_WRITE | write_flags, bh, - inode->i_write_hint, wbc); + __bh_submit(bh, REQ_OP_WRITE | write_flags, + inode->i_write_hint, wbc, + bh_end_async_write); nr_underway++; } bh = next; @@ -2822,7 +2816,8 @@ EXPORT_SYMBOL(generic_block_bmap); void submit_bh(blk_opf_t opf, struct buffer_head *bh) { - submit_bh_wbc(opf, bh, WRITE_LIFE_NOT_SET, NULL); + BUG_ON(!bh->b_end_io); + __bh_submit(bh, opf, WRITE_LIFE_NOT_SET, NULL, end_bio_bh_io_sync); } EXPORT_SYMBOL(submit_bh); |
