btrfs: don't use bio->bi_private to pass the inode to submit_one_bio
authorChristoph Hellwig <hch@lst.de>
Fri, 3 Jun 2022 07:11:01 +0000 (09:11 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 25 Jul 2022 15:45:34 +0000 (17:45 +0200)
submit_one_bio is only used for page cache I/O, so the inode can be
trivially derived from the first page in the bio.

Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent_io.c

index 5efe25b..361b18d 100644 (file)
@@ -181,10 +181,7 @@ static int add_extent_changeset(struct extent_state *state, u32 bits,
 static void submit_one_bio(struct bio *bio, int mirror_num,
                           enum btrfs_compression_type compress_type)
 {
-       struct extent_io_tree *tree = bio->bi_private;
-       struct inode *inode = tree->private_data;
-
-       bio->bi_private = NULL;
+       struct inode *inode = bio_first_page_all(bio)->mapping->host;
 
        /* Caller should ensure the bio has at least some range added */
        ASSERT(bio->bi_iter.bi_size);
@@ -3362,7 +3359,6 @@ static int alloc_new_bio(struct btrfs_inode *inode,
        bio_ctrl->bio = bio;
        bio_ctrl->compress_type = compress_type;
        bio->bi_end_io = end_io_func;
-       bio->bi_private = &inode->io_tree;
        bio->bi_opf = opf;
        ret = calc_bio_boundaries(bio_ctrl, inode, file_offset);
        if (ret < 0)