diff options
author | Dave Airlie <airlied@redhat.com> | 2018-01-18 09:32:15 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2018-01-18 09:32:15 +1000 |
commit | 4a6cc7a44e98a0460bd094b68c75f0705fdc450a (patch) | |
tree | b8c86a1e0342b1166ab52c4d79e404eede57abec /block/bounce.c | |
parent | 8563188e37b000979ab66521f4337df9a3453223 (diff) | |
parent | a8750ddca918032d6349adbf9a4b6555e7db20da (diff) |
BackMerge tag 'v4.15-rc8' into drm-next
Linux 4.15-rc8
Daniel requested this for so the intel CI won't fall over on drm-next
so often.
Diffstat (limited to 'block/bounce.c')
-rw-r--r-- | block/bounce.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/block/bounce.c b/block/bounce.c index fceb1a96480b..1d05c422c932 100644 --- a/block/bounce.c +++ b/block/bounce.c @@ -200,6 +200,7 @@ static void __blk_queue_bounce(struct request_queue *q, struct bio **bio_orig, unsigned i = 0; bool bounce = false; int sectors = 0; + bool passthrough = bio_is_passthrough(*bio_orig); bio_for_each_segment(from, *bio_orig, iter) { if (i++ < BIO_MAX_PAGES) @@ -210,13 +211,14 @@ static void __blk_queue_bounce(struct request_queue *q, struct bio **bio_orig, if (!bounce) return; - if (sectors < bio_sectors(*bio_orig)) { + if (!passthrough && sectors < bio_sectors(*bio_orig)) { bio = bio_split(*bio_orig, sectors, GFP_NOIO, bounce_bio_split); bio_chain(bio, *bio_orig); generic_make_request(*bio_orig); *bio_orig = bio; } - bio = bio_clone_bioset(*bio_orig, GFP_NOIO, bounce_bio_set); + bio = bio_clone_bioset(*bio_orig, GFP_NOIO, passthrough ? NULL : + bounce_bio_set); bio_for_each_segment_all(to, bio, i) { struct page *page = to->bv_page; |