blk-merge.c (8fe0d473f5477e9916d3ac581a226acfe83142be) | blk-merge.c (288dab8a35a0bde426a09870943c8d3ee3a50dab) |
---|---|
1/* 2 * Functions related to segment and merge handling 3 */ 4#include <linux/kernel.h> 5#include <linux/module.h> 6#include <linux/bio.h> 7#include <linux/blkdev.h> 8#include <linux/scatterlist.h> --- 635 unchanged lines hidden (view full) --- 644 * Has to be called with the request spinlock acquired 645 */ 646static int attempt_merge(struct request_queue *q, struct request *req, 647 struct request *next) 648{ 649 if (!rq_mergeable(req) || !rq_mergeable(next)) 650 return 0; 651 | 1/* 2 * Functions related to segment and merge handling 3 */ 4#include <linux/kernel.h> 5#include <linux/module.h> 6#include <linux/bio.h> 7#include <linux/blkdev.h> 8#include <linux/scatterlist.h> --- 635 unchanged lines hidden (view full) --- 644 * Has to be called with the request spinlock acquired 645 */ 646static int attempt_merge(struct request_queue *q, struct request *req, 647 struct request *next) 648{ 649 if (!rq_mergeable(req) || !rq_mergeable(next)) 650 return 0; 651 |
652 if (!blk_check_merge_flags(req->cmd_flags, req_op(req), next->cmd_flags, 653 req_op(next))) | 652 if (req_op(req) != req_op(next)) |
654 return 0; 655 656 /* 657 * not contiguous 658 */ 659 if (blk_rq_pos(req) + blk_rq_sectors(req) != blk_rq_pos(next)) 660 return 0; 661 --- 85 unchanged lines hidden (view full) --- 747 return attempt_merge(q, rq, next); 748} 749 750bool blk_rq_merge_ok(struct request *rq, struct bio *bio) 751{ 752 if (!rq_mergeable(rq) || !bio_mergeable(bio)) 753 return false; 754 | 653 return 0; 654 655 /* 656 * not contiguous 657 */ 658 if (blk_rq_pos(req) + blk_rq_sectors(req) != blk_rq_pos(next)) 659 return 0; 660 --- 85 unchanged lines hidden (view full) --- 746 return attempt_merge(q, rq, next); 747} 748 749bool blk_rq_merge_ok(struct request *rq, struct bio *bio) 750{ 751 if (!rq_mergeable(rq) || !bio_mergeable(bio)) 752 return false; 753 |
755 if (!blk_check_merge_flags(rq->cmd_flags, req_op(rq), bio->bi_rw, 756 bio_op(bio))) | 754 if (req_op(rq) != bio_op(bio)) |
757 return false; 758 759 /* different data direction or already started, don't merge */ 760 if (bio_data_dir(bio) != rq_data_dir(rq)) 761 return false; 762 763 /* must be same device and not a special request */ 764 if (rq->rq_disk != bio->bi_bdev->bd_disk || req_no_special_merge(rq)) --- 22 unchanged lines hidden --- | 755 return false; 756 757 /* different data direction or already started, don't merge */ 758 if (bio_data_dir(bio) != rq_data_dir(rq)) 759 return false; 760 761 /* must be same device and not a special request */ 762 if (rq->rq_disk != bio->bi_bdev->bd_disk || req_no_special_merge(rq)) --- 22 unchanged lines hidden --- |