mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 02:50:49 +09:00
f2fs: don't pass a bio to f2fs_target_device
Set the bdev at bio allocation time by changing the f2fs_target_device calling conventions, so that no bio needs to be passed in. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Chao Yu <chao@kernel.org> Link: https://lore.kernel.org/r/20220228124123.856027-2-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
committed by
Jaegeuk Kim
parent
e643f0f852
commit
e8e3f1a12d
@@ -355,7 +355,7 @@ static void f2fs_write_end_io(struct bio *bio)
|
||||
}
|
||||
|
||||
struct block_device *f2fs_target_device(struct f2fs_sb_info *sbi,
|
||||
block_t blk_addr, struct bio *bio)
|
||||
block_t blk_addr, sector_t *sector)
|
||||
{
|
||||
struct block_device *bdev = sbi->sb->s_bdev;
|
||||
int i;
|
||||
@@ -370,10 +370,9 @@ struct block_device *f2fs_target_device(struct f2fs_sb_info *sbi,
|
||||
}
|
||||
}
|
||||
}
|
||||
if (bio) {
|
||||
bio_set_dev(bio, bdev);
|
||||
bio->bi_iter.bi_sector = SECTOR_FROM_BLOCK(blk_addr);
|
||||
}
|
||||
|
||||
if (sector)
|
||||
*sector = SECTOR_FROM_BLOCK(blk_addr);
|
||||
return bdev;
|
||||
}
|
||||
|
||||
@@ -393,11 +392,14 @@ int f2fs_target_device_index(struct f2fs_sb_info *sbi, block_t blkaddr)
|
||||
static struct bio *__bio_alloc(struct f2fs_io_info *fio, int npages)
|
||||
{
|
||||
struct f2fs_sb_info *sbi = fio->sbi;
|
||||
struct block_device *bdev;
|
||||
sector_t sector;
|
||||
struct bio *bio;
|
||||
|
||||
bdev = f2fs_target_device(sbi, fio->new_blkaddr, §or);
|
||||
bio = bio_alloc_bioset(GFP_NOIO, npages, &f2fs_bioset);
|
||||
|
||||
f2fs_target_device(sbi, fio->new_blkaddr, bio);
|
||||
bio_set_dev(bio, bdev);
|
||||
bio->bi_iter.bi_sector = sector;
|
||||
if (is_read_io(fio->op)) {
|
||||
bio->bi_end_io = f2fs_read_end_io;
|
||||
bio->bi_private = NULL;
|
||||
@@ -985,15 +987,16 @@ static struct bio *f2fs_grab_read_bio(struct inode *inode, block_t blkaddr,
|
||||
struct bio *bio;
|
||||
struct bio_post_read_ctx *ctx = NULL;
|
||||
unsigned int post_read_steps = 0;
|
||||
sector_t sector;
|
||||
struct block_device *bdev = f2fs_target_device(sbi, blkaddr, §or);
|
||||
|
||||
bio = bio_alloc_bioset(for_write ? GFP_NOIO : GFP_KERNEL,
|
||||
bio_max_segs(nr_pages), &f2fs_bioset);
|
||||
bio_set_dev(bio, bdev);
|
||||
if (!bio)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
bio->bi_iter.bi_sector = sector;
|
||||
f2fs_set_bio_crypt_ctx(bio, inode, first_idx, NULL, GFP_NOFS);
|
||||
|
||||
f2fs_target_device(sbi, blkaddr, bio);
|
||||
bio->bi_end_io = f2fs_read_end_io;
|
||||
bio_set_op_attrs(bio, REQ_OP_READ, op_flag);
|
||||
|
||||
|
||||
@@ -3737,7 +3737,7 @@ int f2fs_submit_page_bio(struct f2fs_io_info *fio);
|
||||
int f2fs_merge_page_bio(struct f2fs_io_info *fio);
|
||||
void f2fs_submit_page_write(struct f2fs_io_info *fio);
|
||||
struct block_device *f2fs_target_device(struct f2fs_sb_info *sbi,
|
||||
block_t blk_addr, struct bio *bio);
|
||||
block_t blk_addr, sector_t *sector);
|
||||
int f2fs_target_device_index(struct f2fs_sb_info *sbi, block_t blkaddr);
|
||||
void f2fs_set_data_blkaddr(struct dnode_of_data *dn);
|
||||
void f2fs_update_data_blkaddr(struct dnode_of_data *dn, block_t blkaddr);
|
||||
|
||||
Reference in New Issue
Block a user