summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Wilcox (Oracle) <willy@infradead.org>2026-05-28 18:31:24 +0100
committerChristian Brauner <brauner@kernel.org>2026-06-04 10:28:07 +0200
commitcc81507980f2d482ed5a0e9e3483306158f06665 (patch)
tree67d7fcd17625cc936548f315909ef93ec54ce9d1
parent5059fb945ca895af80506c7a90d46b7308d6f6c5 (diff)
downloadlinux-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.c25
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);