btrfs: don't allocate a btrfs_bio for raid56 per-stripe bios
authorChristoph Hellwig <hch@lst.de>
Mon, 4 Apr 2022 04:45:26 +0000 (06:45 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 16 May 2022 15:03:12 +0000 (17:03 +0200)
Except for the spurious initialization of ->device just after allocation
nothing uses the btrfs_bio, so just allocate a normal bio without extra
data.

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/raid56.c

index e0f881e..ca53f07 100644 (file)
@@ -1082,11 +1082,8 @@ static int rbio_add_io_page(struct btrfs_raid_bio *rbio,
        }
 
        /* put a new bio on the list */
-       bio = btrfs_bio_alloc(bio_max_len >> PAGE_SHIFT ?: 1);
-       btrfs_bio(bio)->device = stripe->dev;
-       bio->bi_iter.bi_size = 0;
-       bio_set_dev(bio, stripe->dev->bdev);
-       bio->bi_opf = opf;
+       bio = bio_alloc(stripe->dev->bdev, max(bio_max_len >> PAGE_SHIFT, 1UL),
+                       opf, GFP_NOFS);
        bio->bi_iter.bi_sector = disk_start >> 9;
        bio->bi_private = rbio;