Lines Matching refs:req

470 				    struct request *req,  in ll_new_hw_segment()  argument
475 if (req->nr_phys_segments + nr_phys_segs > queue_max_segments(q)) in ll_new_hw_segment()
478 if (blk_integrity_merge_bio(q, req, bio) == false) in ll_new_hw_segment()
485 req->nr_phys_segments += nr_phys_segs; in ll_new_hw_segment()
489 req->cmd_flags |= REQ_NOMERGE; in ll_new_hw_segment()
490 if (req == q->last_merge) in ll_new_hw_segment()
495 int ll_back_merge_fn(struct request_queue *q, struct request *req, in ll_back_merge_fn() argument
498 if (req_gap_back_merge(req, bio)) in ll_back_merge_fn()
500 if (blk_integrity_rq(req) && in ll_back_merge_fn()
501 integrity_req_gap_back_merge(req, bio)) in ll_back_merge_fn()
503 if (blk_rq_sectors(req) + bio_sectors(bio) > in ll_back_merge_fn()
504 blk_rq_get_max_sectors(req)) { in ll_back_merge_fn()
505 req->cmd_flags |= REQ_NOMERGE; in ll_back_merge_fn()
506 if (req == q->last_merge) in ll_back_merge_fn()
510 if (!bio_flagged(req->biotail, BIO_SEG_VALID)) in ll_back_merge_fn()
511 blk_recount_segments(q, req->biotail); in ll_back_merge_fn()
515 return ll_new_hw_segment(q, req, bio); in ll_back_merge_fn()
518 int ll_front_merge_fn(struct request_queue *q, struct request *req, in ll_front_merge_fn() argument
522 if (req_gap_front_merge(req, bio)) in ll_front_merge_fn()
524 if (blk_integrity_rq(req) && in ll_front_merge_fn()
525 integrity_req_gap_front_merge(req, bio)) in ll_front_merge_fn()
527 if (blk_rq_sectors(req) + bio_sectors(bio) > in ll_front_merge_fn()
528 blk_rq_get_max_sectors(req)) { in ll_front_merge_fn()
529 req->cmd_flags |= REQ_NOMERGE; in ll_front_merge_fn()
530 if (req == q->last_merge) in ll_front_merge_fn()
536 if (!bio_flagged(req->bio, BIO_SEG_VALID)) in ll_front_merge_fn()
537 blk_recount_segments(q, req->bio); in ll_front_merge_fn()
539 return ll_new_hw_segment(q, req, bio); in ll_front_merge_fn()
546 static bool req_no_special_merge(struct request *req) in req_no_special_merge() argument
548 struct request_queue *q = req->q; in req_no_special_merge()
550 return !q->mq_ops && req->special; in req_no_special_merge()
553 static int ll_merge_requests_fn(struct request_queue *q, struct request *req, in ll_merge_requests_fn() argument
558 req->biotail->bi_seg_back_size + next->bio->bi_seg_front_size; in ll_merge_requests_fn()
564 if (req_no_special_merge(req) || req_no_special_merge(next)) in ll_merge_requests_fn()
567 if (req_gap_back_merge(req, next->bio)) in ll_merge_requests_fn()
573 if ((blk_rq_sectors(req) + blk_rq_sectors(next)) > in ll_merge_requests_fn()
574 blk_rq_get_max_sectors(req)) in ll_merge_requests_fn()
577 total_phys_segments = req->nr_phys_segments + next->nr_phys_segments; in ll_merge_requests_fn()
578 if (blk_phys_contig_segment(q, req->biotail, next->bio)) { in ll_merge_requests_fn()
579 if (req->nr_phys_segments == 1) in ll_merge_requests_fn()
580 req->bio->bi_seg_front_size = seg_size; in ll_merge_requests_fn()
589 if (blk_integrity_merge_rq(q, req, next) == false) in ll_merge_requests_fn()
593 req->nr_phys_segments = total_phys_segments; in ll_merge_requests_fn()
627 static void blk_account_io_merge(struct request *req) in blk_account_io_merge() argument
629 if (blk_do_io_stat(req)) { in blk_account_io_merge()
634 part = req->part; in blk_account_io_merge()
637 part_dec_in_flight(part, rq_data_dir(req)); in blk_account_io_merge()
647 static int attempt_merge(struct request_queue *q, struct request *req, in attempt_merge() argument
650 if (!rq_mergeable(req) || !rq_mergeable(next)) in attempt_merge()
653 if (!blk_check_merge_flags(req->cmd_flags, next->cmd_flags)) in attempt_merge()
659 if (blk_rq_pos(req) + blk_rq_sectors(req) != blk_rq_pos(next)) in attempt_merge()
662 if (rq_data_dir(req) != rq_data_dir(next) in attempt_merge()
663 || req->rq_disk != next->rq_disk in attempt_merge()
667 if (req->cmd_flags & REQ_WRITE_SAME && in attempt_merge()
668 !blk_write_same_mergeable(req->bio, next->bio)) in attempt_merge()
677 if (!ll_merge_requests_fn(q, req, next)) in attempt_merge()
686 if ((req->cmd_flags | next->cmd_flags) & REQ_MIXED_MERGE || in attempt_merge()
687 (req->cmd_flags & REQ_FAILFAST_MASK) != in attempt_merge()
689 blk_rq_set_mixed_merge(req); in attempt_merge()
699 if (time_after(req->start_time, next->start_time)) in attempt_merge()
700 req->start_time = next->start_time; in attempt_merge()
702 req->biotail->bi_next = next->bio; in attempt_merge()
703 req->biotail = next->biotail; in attempt_merge()
705 req->__data_len += blk_rq_bytes(next); in attempt_merge()
707 elv_merge_requests(q, req, next); in attempt_merge()
714 req->ioprio = ioprio_best(req->ioprio, next->ioprio); in attempt_merge()
716 req->cpu = next->cpu; in attempt_merge()