projects
/
cascardo
/
linux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
usb: phy: drop owner assignment from platform_drivers
[cascardo/linux.git]
/
block
/
blk-merge.c
diff --git
a/block/blk-merge.c
b/block/blk-merge.c
index
7788179
..
ba99351
100644
(file)
--- a/
block/blk-merge.c
+++ b/
block/blk-merge.c
@@
-97,14
+97,18
@@
void blk_recalc_rq_segments(struct request *rq)
void blk_recount_segments(struct request_queue *q, struct bio *bio)
{
void blk_recount_segments(struct request_queue *q, struct bio *bio)
{
- if (test_bit(QUEUE_FLAG_NO_SG_MERGE, &q->queue_flags) &&
+ bool no_sg_merge = !!test_bit(QUEUE_FLAG_NO_SG_MERGE,
+ &q->queue_flags);
+
+ if (no_sg_merge && !bio_flagged(bio, BIO_CLONED) &&
bio->bi_vcnt < queue_max_segments(q))
bio->bi_phys_segments = bio->bi_vcnt;
else {
struct bio *nxt = bio->bi_next;
bio->bi_next = NULL;
bio->bi_vcnt < queue_max_segments(q))
bio->bi_phys_segments = bio->bi_vcnt;
else {
struct bio *nxt = bio->bi_next;
bio->bi_next = NULL;
- bio->bi_phys_segments = __blk_recalc_rq_segments(q, bio, false);
+ bio->bi_phys_segments = __blk_recalc_rq_segments(q, bio,
+ no_sg_merge);
bio->bi_next = nxt;
}
bio->bi_next = nxt;
}
@@
-313,7
+317,7
@@
static inline int ll_new_hw_segment(struct request_queue *q,
if (req->nr_phys_segments + nr_phys_segs > queue_max_segments(q))
goto no_merge;
if (req->nr_phys_segments + nr_phys_segs > queue_max_segments(q))
goto no_merge;
- if (b
io_integrity(bio) && blk_integrity_merge_bio(q, req, bio)
)
+ if (b
lk_integrity_merge_bio(q, req, bio) == false
)
goto no_merge;
/*
goto no_merge;
/*
@@
-410,7
+414,7
@@
static int ll_merge_requests_fn(struct request_queue *q, struct request *req,
if (total_phys_segments > queue_max_segments(q))
return 0;
if (total_phys_segments > queue_max_segments(q))
return 0;
- if (blk_integrity_
rq(req) && blk_integrity_merge_rq(q, req, next)
)
+ if (blk_integrity_
merge_rq(q, req, next) == false
)
return 0;
/* Merge is OK... */
return 0;
/* Merge is OK... */
@@
-590,7
+594,7
@@
bool blk_rq_merge_ok(struct request *rq, struct bio *bio)
return false;
/* only merge integrity protected bio into ditto rq */
return false;
/* only merge integrity protected bio into ditto rq */
- if (b
io_integrity(bio) != blk_integrity_rq(rq)
)
+ if (b
lk_integrity_merge_bio(rq->q, rq, bio) == false
)
return false;
/* must be using the same buffer */
return false;
/* must be using the same buffer */