Btrfs: use bio_clone_fast to clone our bio
authorLiu Bo <bo.li.liu@oracle.com>
Tue, 4 Apr 2017 19:23:25 +0000 (12:23 -0700)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Jun 2017 16:25:58 +0000 (18:25 +0200)
For raid1 and raid10, we clone the original bio to the bios which are then
sent to different disks.

Right now we use bio_clone_bioset to create a clone bio with iterating
bi_io_vec to initialize it.  This changes it to use bio_clone_fast()
which creates a clone bio but only copies the bi_io_vec pointer
instead of iterating bi_io_vec.

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent_io.c

index 1fcfa1d9e77acdc40152f29aa0178b0ad9d5f41a..292e458b2a9d74547883258dfb34ce13fbe26c0b 100644 (file)
@@ -2694,7 +2694,7 @@ struct bio *btrfs_bio_clone(struct bio *bio, gfp_t gfp_mask)
        struct btrfs_io_bio *btrfs_bio;
        struct bio *new;
 
-       new = bio_clone_bioset(bio, gfp_mask, btrfs_bioset);
+       new = bio_clone_fast(bio, gfp_mask, btrfs_bioset);
        if (new) {
                btrfs_bio = btrfs_io_bio(new);
                btrfs_bio->csum = NULL;