FAILED: patch "[PATCH] dm: use bio_split() when splitting out the already processed" failed to apply to 4.4-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
f21c601a2bb319ec19eb4562eadc7797d90fd90eMon Sep 17 00:00:00 2001
From: Mike Snitzer <[email protected]>
Date: Fri, 15 Jun 2018 09:35:33 -0400
Subject: [PATCH] dm: use bio_split() when splitting out the already processed
bio
Use of bio_clone_bioset() is inefficient if there is no need to clone the original bio's bio_vec array. Best to use the bio_clone_fast() variant. Also, just using bio_advance() is only part of what is needed to properly setup the clone -- it doesn't account for the various bio_integrity() related work that also needs to be performed (see bio_split).
Address both of these issues by switching from bio_clone_bioset() to bio_split().
drivers/md/dm.c +2 -3
@@ -1606,10 +1606,9 @@ static blk_qc_t __split_and_process_bio(struct mapped_device *md,* the usage of io->orig_bio in dm_remap_zone_report() * won't be affected by this reassignment. */ -struct bio *b =bio_clone_bioset (bio,GFP_NOIO , - &md->queue->bio_split); +struct bio *b =bio_split (bio,bio_sectors (bio) - ci.sector_count, +GFP_NOIO , &md->queue->bio_split); ci.io->orig_bio = b; -bio_advance (bio, (bio_sectors (bio) - ci.sector_count) <<9 );bio_chain (b, bio); ret =generic_make_request (bio);break ;