Commit e288c080 authored by David Sterba's avatar David Sterba

btrfs: unify end_io callbacks of async_submit_bio

The end_io callbacks passed to btrfs_wq_submit_bio
(btrfs_submit_bio_done and btree_submit_bio_done) are effectively the
same code, there's no point to do the indirection. Export
btrfs_submit_bio_done and call it directly.
Reviewed-by: default avatarNikolay Borisov <nborisov@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent d7cbfafc
...@@ -108,7 +108,6 @@ struct async_submit_bio { ...@@ -108,7 +108,6 @@ struct async_submit_bio {
void *private_data; void *private_data;
struct bio *bio; struct bio *bio;
extent_submit_bio_start_t *submit_bio_start; extent_submit_bio_start_t *submit_bio_start;
extent_submit_bio_done_t *submit_bio_done;
int mirror_num; int mirror_num;
/* /*
* bio_offset is optional, can be used if the pages in the bio * bio_offset is optional, can be used if the pages in the bio
...@@ -775,7 +774,7 @@ static void run_one_async_done(struct btrfs_work *work) ...@@ -775,7 +774,7 @@ static void run_one_async_done(struct btrfs_work *work)
return; return;
} }
async->submit_bio_done(async->private_data, async->bio, async->mirror_num); btrfs_submit_bio_done(async->private_data, async->bio, async->mirror_num);
} }
static void run_one_async_free(struct btrfs_work *work) static void run_one_async_free(struct btrfs_work *work)
...@@ -789,8 +788,7 @@ static void run_one_async_free(struct btrfs_work *work) ...@@ -789,8 +788,7 @@ static void run_one_async_free(struct btrfs_work *work)
blk_status_t btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct bio *bio, blk_status_t btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct bio *bio,
int mirror_num, unsigned long bio_flags, int mirror_num, unsigned long bio_flags,
u64 bio_offset, void *private_data, u64 bio_offset, void *private_data,
extent_submit_bio_start_t *submit_bio_start, extent_submit_bio_start_t *submit_bio_start)
extent_submit_bio_done_t *submit_bio_done)
{ {
struct async_submit_bio *async; struct async_submit_bio *async;
...@@ -802,7 +800,6 @@ blk_status_t btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct bio *bio, ...@@ -802,7 +800,6 @@ blk_status_t btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct bio *bio,
async->bio = bio; async->bio = bio;
async->mirror_num = mirror_num; async->mirror_num = mirror_num;
async->submit_bio_start = submit_bio_start; async->submit_bio_start = submit_bio_start;
async->submit_bio_done = submit_bio_done;
btrfs_init_work(&async->work, btrfs_worker_helper, run_one_async_start, btrfs_init_work(&async->work, btrfs_worker_helper, run_one_async_start,
run_one_async_done, run_one_async_free); run_one_async_done, run_one_async_free);
...@@ -845,24 +842,6 @@ static blk_status_t btree_submit_bio_start(void *private_data, struct bio *bio, ...@@ -845,24 +842,6 @@ static blk_status_t btree_submit_bio_start(void *private_data, struct bio *bio,
return btree_csum_one_bio(bio); return btree_csum_one_bio(bio);
} }
static blk_status_t btree_submit_bio_done(void *private_data, struct bio *bio,
int mirror_num)
{
struct inode *inode = private_data;
blk_status_t ret;
/*
* when we're called for a write, we're already in the async
* submission context. Just jump into btrfs_map_bio
*/
ret = btrfs_map_bio(btrfs_sb(inode->i_sb), bio, mirror_num, 1);
if (ret) {
bio->bi_status = ret;
bio_endio(bio);
}
return ret;
}
static int check_async_write(struct btrfs_inode *bi) static int check_async_write(struct btrfs_inode *bi)
{ {
if (atomic_read(&bi->sync_writers)) if (atomic_read(&bi->sync_writers))
...@@ -905,8 +884,7 @@ static blk_status_t btree_submit_bio_hook(void *private_data, struct bio *bio, ...@@ -905,8 +884,7 @@ static blk_status_t btree_submit_bio_hook(void *private_data, struct bio *bio,
*/ */
ret = btrfs_wq_submit_bio(fs_info, bio, mirror_num, 0, ret = btrfs_wq_submit_bio(fs_info, bio, mirror_num, 0,
bio_offset, private_data, bio_offset, private_data,
btree_submit_bio_start, btree_submit_bio_start);
btree_submit_bio_done);
} }
if (ret) if (ret)
......
...@@ -120,8 +120,9 @@ blk_status_t btrfs_bio_wq_end_io(struct btrfs_fs_info *info, struct bio *bio, ...@@ -120,8 +120,9 @@ blk_status_t btrfs_bio_wq_end_io(struct btrfs_fs_info *info, struct bio *bio,
blk_status_t btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct bio *bio, blk_status_t btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct bio *bio,
int mirror_num, unsigned long bio_flags, int mirror_num, unsigned long bio_flags,
u64 bio_offset, void *private_data, u64 bio_offset, void *private_data,
extent_submit_bio_start_t *submit_bio_start, extent_submit_bio_start_t *submit_bio_start);
extent_submit_bio_done_t *submit_bio_done); blk_status_t btrfs_submit_bio_done(void *private_data, struct bio *bio,
int mirror_num);
int btrfs_write_tree_block(struct extent_buffer *buf); int btrfs_write_tree_block(struct extent_buffer *buf);
void btrfs_wait_tree_block_writeback(struct extent_buffer *buf); void btrfs_wait_tree_block_writeback(struct extent_buffer *buf);
int btrfs_init_log_root_tree(struct btrfs_trans_handle *trans, int btrfs_init_log_root_tree(struct btrfs_trans_handle *trans,
......
...@@ -92,9 +92,6 @@ typedef blk_status_t (extent_submit_bio_hook_t)(void *private_data, struct bio * ...@@ -92,9 +92,6 @@ typedef blk_status_t (extent_submit_bio_hook_t)(void *private_data, struct bio *
typedef blk_status_t (extent_submit_bio_start_t)(void *private_data, typedef blk_status_t (extent_submit_bio_start_t)(void *private_data,
struct bio *bio, u64 bio_offset); struct bio *bio, u64 bio_offset);
typedef blk_status_t (extent_submit_bio_done_t)(void *private_data,
struct bio *bio, int mirror_num);
struct extent_io_ops { struct extent_io_ops {
/* /*
* The following callbacks must be allways defined, the function * The following callbacks must be allways defined, the function
......
...@@ -1957,7 +1957,7 @@ static blk_status_t btrfs_submit_bio_start(void *private_data, struct bio *bio, ...@@ -1957,7 +1957,7 @@ static blk_status_t btrfs_submit_bio_start(void *private_data, struct bio *bio,
* At IO completion time the cums attached on the ordered extent record * At IO completion time the cums attached on the ordered extent record
* are inserted into the btree * are inserted into the btree
*/ */
static blk_status_t btrfs_submit_bio_done(void *private_data, struct bio *bio, blk_status_t btrfs_submit_bio_done(void *private_data, struct bio *bio,
int mirror_num) int mirror_num)
{ {
struct inode *inode = private_data; struct inode *inode = private_data;
...@@ -2030,8 +2030,7 @@ static blk_status_t btrfs_submit_bio_hook(void *private_data, struct bio *bio, ...@@ -2030,8 +2030,7 @@ static blk_status_t btrfs_submit_bio_hook(void *private_data, struct bio *bio,
/* we're doing a write, do the async checksumming */ /* we're doing a write, do the async checksumming */
ret = btrfs_wq_submit_bio(fs_info, bio, mirror_num, bio_flags, ret = btrfs_wq_submit_bio(fs_info, bio, mirror_num, bio_flags,
bio_offset, inode, bio_offset, inode,
btrfs_submit_bio_start, btrfs_submit_bio_start);
btrfs_submit_bio_done);
goto out; goto out;
} else if (!skip_sum) { } else if (!skip_sum) {
ret = btrfs_csum_one_bio(inode, bio, 0, 0); ret = btrfs_csum_one_bio(inode, bio, 0, 0);
...@@ -8295,8 +8294,7 @@ static inline blk_status_t btrfs_submit_dio_bio(struct bio *bio, ...@@ -8295,8 +8294,7 @@ static inline blk_status_t btrfs_submit_dio_bio(struct bio *bio,
if (write && async_submit) { if (write && async_submit) {
ret = btrfs_wq_submit_bio(fs_info, bio, 0, 0, ret = btrfs_wq_submit_bio(fs_info, bio, 0, 0,
file_offset, inode, file_offset, inode,
btrfs_submit_bio_start_direct_io, btrfs_submit_bio_start_direct_io);
btrfs_submit_bio_done);
goto err; goto err;
} else if (write) { } else if (write) {
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment