From 28793b194e6a0e50d4abc6fec7472799aa734d1f Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Sat, 6 Aug 2022 10:03:28 +0200 Subject: [PATCH] btrfs: decide bio cloning inside submit_stripe_bio Remove the orig_bio argument as it can be derived from the bioc, and the clone argument as it can be calculated from bioc and dev_nr. Reviewed-by: Nikolay Borisov Reviewed-by: Johannes Thumshirn Reviewed-by: Anand Jain Signed-off-by: Christoph Hellwig Reviewed-by: David Sterba Signed-off-by: David Sterba --- fs/btrfs/volumes.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 79c222b8..67c3aa8 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -6788,13 +6788,12 @@ static void btrfs_submit_dev_bio(struct btrfs_device *dev, struct bio *bio) submit_bio(bio); } -static void submit_stripe_bio(struct btrfs_io_context *bioc, - struct bio *orig_bio, int dev_nr, bool clone) +static void submit_stripe_bio(struct btrfs_io_context *bioc, int dev_nr) { - struct bio *bio; + struct bio *orig_bio = bioc->orig_bio, *bio; /* Reuse the bio embedded into the btrfs_bio for the last mirror */ - if (!clone) { + if (dev_nr == bioc->num_stripes - 1) { bio = orig_bio; btrfs_bio(bio)->device = bioc->stripes[dev_nr].dev; bio->bi_end_io = btrfs_end_bio; @@ -6850,11 +6849,8 @@ void btrfs_submit_bio(struct btrfs_fs_info *fs_info, struct bio *bio, int mirror BUG(); } - for (dev_nr = 0; dev_nr < total_devs; dev_nr++) { - const bool should_clone = (dev_nr < total_devs - 1); - - submit_stripe_bio(bioc, bio, dev_nr, should_clone); - } + for (dev_nr = 0; dev_nr < total_devs; dev_nr++) + submit_stripe_bio(bioc, dev_nr); } static bool dev_args_match_fs_devices(const struct btrfs_dev_lookup_args *args, -- 2.7.4