mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
md-bitmap: Convert read_file_page and write_file_page to bh_submit()
Avoid an extra indirect function call by using bh_submit() instead of submit_bh(). Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Link: https://patch.msgid.link/20260528173150.1093780-31-willy@infradead.org Reviewed-by: Jan Kara <jack@suse.cz> Cc: linux-raid@vger.kernel.org Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
This commit is contained in:
parent
b9fa6916b1
commit
2dc07082e3
|
|
@ -501,6 +501,18 @@ static void write_sb_page(struct bitmap *bitmap, unsigned long pg_index,
|
|||
static void md_bitmap_file_kick(struct bitmap *bitmap);
|
||||
|
||||
#ifdef CONFIG_MD_BITMAP_FILE
|
||||
static void end_bitmap_write(struct bio *bio)
|
||||
{
|
||||
struct buffer_head *bh;
|
||||
bool uptodate = bio_endio_bh(bio, &bh);
|
||||
struct bitmap *bitmap = bh->b_private;
|
||||
|
||||
if (!uptodate)
|
||||
set_bit(BITMAP_WRITE_ERROR, &bitmap->flags);
|
||||
if (atomic_dec_and_test(&bitmap->pending_writes))
|
||||
wake_up(&bitmap->write_wait);
|
||||
}
|
||||
|
||||
static void write_file_page(struct bitmap *bitmap, struct page *page, int wait)
|
||||
{
|
||||
struct buffer_head *bh = page_buffers(page);
|
||||
|
|
@ -509,7 +521,7 @@ static void write_file_page(struct bitmap *bitmap, struct page *page, int wait)
|
|||
atomic_inc(&bitmap->pending_writes);
|
||||
set_buffer_locked(bh);
|
||||
set_buffer_mapped(bh);
|
||||
submit_bh(REQ_OP_WRITE | REQ_SYNC, bh);
|
||||
bh_submit(bh, REQ_OP_WRITE | REQ_SYNC, end_bitmap_write);
|
||||
bh = bh->b_this_page;
|
||||
}
|
||||
|
||||
|
|
@ -518,16 +530,6 @@ static void write_file_page(struct bitmap *bitmap, struct page *page, int wait)
|
|||
atomic_read(&bitmap->pending_writes) == 0);
|
||||
}
|
||||
|
||||
static void end_bitmap_write(struct buffer_head *bh, int uptodate)
|
||||
{
|
||||
struct bitmap *bitmap = bh->b_private;
|
||||
|
||||
if (!uptodate)
|
||||
set_bit(BITMAP_WRITE_ERROR, &bitmap->flags);
|
||||
if (atomic_dec_and_test(&bitmap->pending_writes))
|
||||
wake_up(&bitmap->write_wait);
|
||||
}
|
||||
|
||||
static void free_buffers(struct page *page)
|
||||
{
|
||||
struct buffer_head *bh;
|
||||
|
|
@ -591,12 +593,11 @@ static int read_file_page(struct file *file, unsigned long index,
|
|||
else
|
||||
count -= blocksize;
|
||||
|
||||
bh->b_end_io = end_bitmap_write;
|
||||
bh->b_private = bitmap;
|
||||
atomic_inc(&bitmap->pending_writes);
|
||||
set_buffer_locked(bh);
|
||||
set_buffer_mapped(bh);
|
||||
submit_bh(REQ_OP_READ, bh);
|
||||
bh_submit(bh, REQ_OP_READ, end_bitmap_write);
|
||||
}
|
||||
blk_cur++;
|
||||
bh = bh->b_this_page;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user