aboutsummaryrefslogtreecommitdiffstats
path: root/block/blk-merge.c
diff options
context:
space:
mode:
Diffstat (limited to 'block/blk-merge.c')
-rw-r--r--block/blk-merge.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/block/blk-merge.c b/block/blk-merge.c
index 642b862608a1..936a110de0b9 100644
--- a/block/blk-merge.c
+++ b/block/blk-merge.c
@@ -419,6 +419,10 @@ static int attempt_merge(struct request_queue *q, struct request *req,
419 || next->special) 419 || next->special)
420 return 0; 420 return 0;
421 421
422 if (req->cmd_flags & REQ_WRITE_SAME &&
423 !blk_write_same_mergeable(req->bio, next->bio))
424 return 0;
425
422 /* 426 /*
423 * If we are allowed to merge, then append bio list 427 * If we are allowed to merge, then append bio list
424 * from next to rq and release next. merge_requests_fn 428 * from next to rq and release next. merge_requests_fn
@@ -518,6 +522,11 @@ bool blk_rq_merge_ok(struct request *rq, struct bio *bio)
518 if (bio_integrity(bio) != blk_integrity_rq(rq)) 522 if (bio_integrity(bio) != blk_integrity_rq(rq))
519 return false; 523 return false;
520 524
525 /* must be using the same buffer */
526 if (rq->cmd_flags & REQ_WRITE_SAME &&
527 !blk_write_same_mergeable(rq->bio, bio))
528 return false;
529
521 return true; 530 return true;
522} 531}
523 532