btrfs: simplify finding the inode in submit_one_bio
authorChristoph Hellwig <hch@lst.de>
Tue, 7 Mar 2023 16:39:42 +0000 (17:39 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 17 Apr 2023 16:01:17 +0000 (18:01 +0200)
struct btrfs_bio now has an always valid inode pointer that can be used
to find the inode in submit_one_bio, so use that and initialize all
variables for which it is possible at declaration time.

Reviewed-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent_io.c

index 2b9e24782b36f5ddff9c1d9c8099b43aa3d1198b..2670c479847094740918a3bf8a3b98e67fdae34b 100644 (file)
@@ -123,23 +123,16 @@ struct btrfs_bio_ctrl {
 
 static void submit_one_bio(struct btrfs_bio_ctrl *bio_ctrl)
 {
-       struct bio *bio;
-       struct bio_vec *bv;
-       struct inode *inode;
-       int mirror_num;
+       struct bio *bio = bio_ctrl->bio;
+       int mirror_num = bio_ctrl->mirror_num;
 
-       if (!bio_ctrl->bio)
+       if (!bio)
                return;
 
-       bio = bio_ctrl->bio;
-       bv = bio_first_bvec_all(bio);
-       inode = bv->bv_page->mapping->host;
-       mirror_num = bio_ctrl->mirror_num;
-
        /* Caller should ensure the bio has at least some range added */
        ASSERT(bio->bi_iter.bi_size);
 
-       if (!is_data_inode(inode)) {
+       if (!is_data_inode(&btrfs_bio(bio)->inode->vfs_inode)) {
                if (btrfs_op(bio) != BTRFS_MAP_WRITE) {
                        /*
                         * For metadata read, we should have the parent_check,