Lines Matching refs:rq

89 void blk_recalc_rq_segments(struct request *rq)  in blk_recalc_rq_segments()  argument
92 &rq->q->queue_flags); in blk_recalc_rq_segments()
94 rq->nr_phys_segments = __blk_recalc_rq_segments(rq->q, rq->bio, in blk_recalc_rq_segments()
247 int blk_rq_map_sg(struct request_queue *q, struct request *rq, in blk_rq_map_sg() argument
253 if (rq->bio) in blk_rq_map_sg()
254 nsegs = __blk_bios_map_sg(q, rq->bio, sglist, &sg); in blk_rq_map_sg()
256 if (unlikely(rq->cmd_flags & REQ_COPY_USER) && in blk_rq_map_sg()
257 (blk_rq_bytes(rq) & q->dma_pad_mask)) { in blk_rq_map_sg()
259 (q->dma_pad_mask & ~blk_rq_bytes(rq)) + 1; in blk_rq_map_sg()
262 rq->extra_len += pad_len; in blk_rq_map_sg()
265 if (q->dma_drain_size && q->dma_drain_needed(rq)) { in blk_rq_map_sg()
266 if (rq->cmd_flags & REQ_WRITE) in blk_rq_map_sg()
276 rq->extra_len += q->dma_drain_size; in blk_rq_map_sg()
421 void blk_rq_set_mixed_merge(struct request *rq) in blk_rq_set_mixed_merge() argument
423 unsigned int ff = rq->cmd_flags & REQ_FAILFAST_MASK; in blk_rq_set_mixed_merge()
426 if (rq->cmd_flags & REQ_MIXED_MERGE) in blk_rq_set_mixed_merge()
434 for (bio = rq->bio; bio; bio = bio->bi_next) { in blk_rq_set_mixed_merge()
439 rq->cmd_flags |= REQ_MIXED_MERGE; in blk_rq_set_mixed_merge()
539 int attempt_back_merge(struct request_queue *q, struct request *rq) in attempt_back_merge() argument
541 struct request *next = elv_latter_request(q, rq); in attempt_back_merge()
544 return attempt_merge(q, rq, next); in attempt_back_merge()
549 int attempt_front_merge(struct request_queue *q, struct request *rq) in attempt_front_merge() argument
551 struct request *prev = elv_former_request(q, rq); in attempt_front_merge()
554 return attempt_merge(q, prev, rq); in attempt_front_merge()
559 int blk_attempt_req_merge(struct request_queue *q, struct request *rq, in blk_attempt_req_merge() argument
562 return attempt_merge(q, rq, next); in blk_attempt_req_merge()
565 bool blk_rq_merge_ok(struct request *rq, struct bio *bio) in blk_rq_merge_ok() argument
567 struct request_queue *q = rq->q; in blk_rq_merge_ok()
569 if (!rq_mergeable(rq) || !bio_mergeable(bio)) in blk_rq_merge_ok()
572 if (!blk_check_merge_flags(rq->cmd_flags, bio->bi_rw)) in blk_rq_merge_ok()
576 if (bio_data_dir(bio) != rq_data_dir(rq)) in blk_rq_merge_ok()
580 if (rq->rq_disk != bio->bi_bdev->bd_disk || req_no_special_merge(rq)) in blk_rq_merge_ok()
584 if (blk_integrity_merge_bio(rq->q, rq, bio) == false) in blk_rq_merge_ok()
588 if (rq->cmd_flags & REQ_WRITE_SAME && in blk_rq_merge_ok()
589 !blk_write_same_mergeable(rq->bio, bio)) in blk_rq_merge_ok()
595 bprev = &rq->biotail->bi_io_vec[rq->biotail->bi_vcnt - 1]; in blk_rq_merge_ok()
603 int blk_try_merge(struct request *rq, struct bio *bio) in blk_try_merge() argument
605 if (blk_rq_pos(rq) + blk_rq_sectors(rq) == bio->bi_iter.bi_sector) in blk_try_merge()
607 else if (blk_rq_pos(rq) - bio_sectors(bio) == bio->bi_iter.bi_sector) in blk_try_merge()