diff options
author | David Sterba <dsterba@suse.com> | 2018-07-18 11:36:24 -0400 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2018-08-06 07:12:55 -0400 |
commit | e288c080dddd1fdc3b7e0165cebd7af51a52d016 (patch) | |
tree | 98f54cb59e09ff05f7205e1ed732687829397a08 /fs/btrfs/disk-io.c | |
parent | d7cbfafc4bc37ed21351cdedbc6f9d979545dbf3 (diff) |
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: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/disk-io.c')
-rw-r--r-- | fs/btrfs/disk-io.c | 28 |
1 files changed, 3 insertions, 25 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index d82df15af89c..03a7ed448f38 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c | |||
@@ -108,7 +108,6 @@ struct async_submit_bio { | |||
108 | void *private_data; | 108 | void *private_data; |
109 | struct bio *bio; | 109 | struct bio *bio; |
110 | extent_submit_bio_start_t *submit_bio_start; | 110 | extent_submit_bio_start_t *submit_bio_start; |
111 | extent_submit_bio_done_t *submit_bio_done; | ||
112 | int mirror_num; | 111 | int mirror_num; |
113 | /* | 112 | /* |
114 | * bio_offset is optional, can be used if the pages in the bio | 113 | * 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 | return; | 774 | return; |
776 | } | 775 | } |
777 | 776 | ||
778 | async->submit_bio_done(async->private_data, async->bio, async->mirror_num); | 777 | btrfs_submit_bio_done(async->private_data, async->bio, async->mirror_num); |
779 | } | 778 | } |
780 | 779 | ||
781 | static void run_one_async_free(struct btrfs_work *work) | 780 | 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 | blk_status_t btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct bio *bio, | 788 | blk_status_t btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct bio *bio, |
790 | int mirror_num, unsigned long bio_flags, | 789 | int mirror_num, unsigned long bio_flags, |
791 | u64 bio_offset, void *private_data, | 790 | u64 bio_offset, void *private_data, |
792 | extent_submit_bio_start_t *submit_bio_start, | 791 | extent_submit_bio_start_t *submit_bio_start) |
793 | extent_submit_bio_done_t *submit_bio_done) | ||
794 | { | 792 | { |
795 | struct async_submit_bio *async; | 793 | struct async_submit_bio *async; |
796 | 794 | ||
@@ -802,7 +800,6 @@ blk_status_t btrfs_wq_submit_bio(struct btrfs_fs_info *fs_info, struct bio *bio, | |||
802 | async->bio = bio; | 800 | async->bio = bio; |
803 | async->mirror_num = mirror_num; | 801 | async->mirror_num = mirror_num; |
804 | async->submit_bio_start = submit_bio_start; | 802 | async->submit_bio_start = submit_bio_start; |
805 | async->submit_bio_done = submit_bio_done; | ||
806 | 803 | ||
807 | btrfs_init_work(&async->work, btrfs_worker_helper, run_one_async_start, | 804 | btrfs_init_work(&async->work, btrfs_worker_helper, run_one_async_start, |
808 | run_one_async_done, run_one_async_free); | 805 | 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 | return btree_csum_one_bio(bio); | 842 | return btree_csum_one_bio(bio); |
846 | } | 843 | } |
847 | 844 | ||
848 | static blk_status_t btree_submit_bio_done(void *private_data, struct bio *bio, | ||
849 | int mirror_num) | ||
850 | { | ||
851 | struct inode *inode = private_data; | ||
852 | blk_status_t ret; | ||
853 | |||
854 | /* | ||
855 | * when we're called for a write, we're already in the async | ||
856 | * submission context. Just jump into btrfs_map_bio | ||
857 | */ | ||
858 | ret = btrfs_map_bio(btrfs_sb(inode->i_sb), bio, mirror_num, 1); | ||
859 | if (ret) { | ||
860 | bio->bi_status = ret; | ||
861 | bio_endio(bio); | ||
862 | } | ||
863 | return ret; | ||
864 | } | ||
865 | |||
866 | static int check_async_write(struct btrfs_inode *bi) | 845 | static int check_async_write(struct btrfs_inode *bi) |
867 | { | 846 | { |
868 | if (atomic_read(&bi->sync_writers)) | 847 | 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 | */ | 884 | */ |
906 | ret = btrfs_wq_submit_bio(fs_info, bio, mirror_num, 0, | 885 | ret = btrfs_wq_submit_bio(fs_info, bio, mirror_num, 0, |
907 | bio_offset, private_data, | 886 | bio_offset, private_data, |
908 | btree_submit_bio_start, | 887 | btree_submit_bio_start); |
909 | btree_submit_bio_done); | ||
910 | } | 888 | } |
911 | 889 | ||
912 | if (ret) | 890 | if (ret) |