Lines Matching refs:plug

586 					    struct blk_plug *plug,  in blk_mq_rq_cache_fill()  argument
596 .nr_tags = plug->nr_ios, in blk_mq_rq_cache_fill()
597 .cached_rqs = &plug->cached_rqs, in blk_mq_rq_cache_fill()
606 plug->nr_ios = 1; in blk_mq_rq_cache_fill()
618 struct blk_plug *plug = current->plug; in blk_mq_alloc_cached_request() local
621 if (!plug) in blk_mq_alloc_cached_request()
624 if (rq_list_empty(&plug->cached_rqs)) { in blk_mq_alloc_cached_request()
625 if (plug->nr_ios == 1) in blk_mq_alloc_cached_request()
627 rq = blk_mq_rq_cache_fill(q, plug, opf, flags); in blk_mq_alloc_cached_request()
631 rq = rq_list_peek(&plug->cached_rqs); in blk_mq_alloc_cached_request()
640 rq_list_pop(&plug->cached_rqs); in blk_mq_alloc_cached_request()
825 void blk_mq_free_plug_rqs(struct blk_plug *plug) in blk_mq_free_plug_rqs() argument
829 while ((rq = rq_list_pop(&plug->cached_rqs)) != NULL) in blk_mq_free_plug_rqs()
1392 static inline unsigned short blk_plug_max_rq_count(struct blk_plug *plug) in blk_plug_max_rq_count() argument
1394 if (plug->multiple_queues) in blk_plug_max_rq_count()
1399 static void blk_add_rq_to_plug(struct blk_plug *plug, struct request *rq) in blk_add_rq_to_plug() argument
1401 struct request *last = rq_list_peek(&plug->mq_list); in blk_add_rq_to_plug()
1403 if (!plug->rq_count) { in blk_add_rq_to_plug()
1405 } else if (plug->rq_count >= blk_plug_max_rq_count(plug) || in blk_add_rq_to_plug()
1408 blk_mq_flush_plug_list(plug, false); in blk_add_rq_to_plug()
1413 if (!plug->multiple_queues && last && last->q != rq->q) in blk_add_rq_to_plug()
1414 plug->multiple_queues = true; in blk_add_rq_to_plug()
1419 if (!plug->has_elevator && (rq->rq_flags & RQF_SCHED_TAGS)) in blk_add_rq_to_plug()
1420 plug->has_elevator = true; in blk_add_rq_to_plug()
1421 rq_list_add_tail(&plug->mq_list, rq); in blk_add_rq_to_plug()
1422 plug->rq_count++; in blk_add_rq_to_plug()
1446 if (current->plug && !at_head) { in blk_execute_rq_nowait()
1447 blk_add_rq_to_plug(current->plug, rq); in blk_execute_rq_nowait()
2959 void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule) in blk_mq_flush_plug_list() argument
2970 if (plug->rq_count == 0) in blk_mq_flush_plug_list()
2972 depth = plug->rq_count; in blk_mq_flush_plug_list()
2973 plug->rq_count = 0; in blk_mq_flush_plug_list()
2975 if (!plug->has_elevator && !from_schedule) { in blk_mq_flush_plug_list()
2976 if (plug->multiple_queues) { in blk_mq_flush_plug_list()
2977 blk_mq_dispatch_multiple_queue_requests(&plug->mq_list); in blk_mq_flush_plug_list()
2981 blk_mq_dispatch_queue_requests(&plug->mq_list, depth); in blk_mq_flush_plug_list()
2982 if (rq_list_empty(&plug->mq_list)) in blk_mq_flush_plug_list()
2987 blk_mq_dispatch_list(&plug->mq_list, from_schedule); in blk_mq_flush_plug_list()
2988 } while (!rq_list_empty(&plug->mq_list)); in blk_mq_flush_plug_list()
3037 struct blk_plug *plug, in blk_mq_get_new_requests() argument
3055 if (plug) { in blk_mq_get_new_requests()
3056 data.nr_tags = plug->nr_ios; in blk_mq_get_new_requests()
3057 plug->nr_ios = 1; in blk_mq_get_new_requests()
3058 data.cached_rqs = &plug->cached_rqs; in blk_mq_get_new_requests()
3070 static struct request *blk_mq_peek_cached_request(struct blk_plug *plug, in blk_mq_peek_cached_request() argument
3076 if (!plug) in blk_mq_peek_cached_request()
3078 rq = rq_list_peek(&plug->cached_rqs); in blk_mq_peek_cached_request()
3089 static void blk_mq_use_cached_rq(struct request *rq, struct blk_plug *plug, in blk_mq_use_cached_rq() argument
3092 if (rq_list_pop(&plug->cached_rqs) != rq) in blk_mq_use_cached_rq()
3134 struct blk_plug *plug = current->plug; in blk_mq_submit_bio() local
3144 rq = blk_mq_peek_cached_request(plug, q, bio->bi_opf); in blk_mq_submit_bio()
3202 blk_mq_use_cached_rq(rq, plug, bio); in blk_mq_submit_bio()
3204 rq = blk_mq_get_new_requests(q, plug, bio); in blk_mq_submit_bio()
3232 if (plug) { in blk_mq_submit_bio()
3233 blk_add_rq_to_plug(plug, rq); in blk_mq_submit_bio()