Lines Matching refs:plug
514 struct blk_plug *plug, in blk_mq_rq_cache_fill() argument
522 .nr_tags = plug->nr_ios, in blk_mq_rq_cache_fill()
523 .cached_rq = &plug->cached_rq, in blk_mq_rq_cache_fill()
530 plug->nr_ios = 1; in blk_mq_rq_cache_fill()
542 struct blk_plug *plug = current->plug; in blk_mq_alloc_cached_request() local
545 if (!plug) in blk_mq_alloc_cached_request()
547 if (rq_list_empty(plug->cached_rq)) { in blk_mq_alloc_cached_request()
548 if (plug->nr_ios == 1) in blk_mq_alloc_cached_request()
550 rq = blk_mq_rq_cache_fill(q, plug, opf, flags); in blk_mq_alloc_cached_request()
555 rq = rq_list_peek(&plug->cached_rq); in blk_mq_alloc_cached_request()
564 plug->cached_rq = rq_list_next(rq); in blk_mq_alloc_cached_request()
718 void blk_mq_free_plug_rqs(struct blk_plug *plug) in blk_mq_free_plug_rqs() argument
722 while ((rq = rq_list_pop(&plug->cached_rq)) != NULL) in blk_mq_free_plug_rqs()
1248 static inline unsigned short blk_plug_max_rq_count(struct blk_plug *plug) in blk_plug_max_rq_count() argument
1250 if (plug->multiple_queues) in blk_plug_max_rq_count()
1255 static void blk_add_rq_to_plug(struct blk_plug *plug, struct request *rq) in blk_add_rq_to_plug() argument
1257 struct request *last = rq_list_peek(&plug->mq_list); in blk_add_rq_to_plug()
1259 if (!plug->rq_count) { in blk_add_rq_to_plug()
1261 } else if (plug->rq_count >= blk_plug_max_rq_count(plug) || in blk_add_rq_to_plug()
1264 blk_mq_flush_plug_list(plug, false); in blk_add_rq_to_plug()
1269 if (!plug->multiple_queues && last && last->q != rq->q) in blk_add_rq_to_plug()
1270 plug->multiple_queues = true; in blk_add_rq_to_plug()
1271 if (!plug->has_elevator && (rq->rq_flags & RQF_ELV)) in blk_add_rq_to_plug()
1272 plug->has_elevator = true; in blk_add_rq_to_plug()
1274 rq_list_add(&plug->mq_list, rq); in blk_add_rq_to_plug()
1275 plug->rq_count++; in blk_add_rq_to_plug()
1302 if (current->plug) in blk_execute_rq_nowait()
1303 blk_add_rq_to_plug(current->plug, rq); in blk_execute_rq_nowait()
2620 static void blk_mq_plug_issue_direct(struct blk_plug *plug, bool from_schedule) in blk_mq_plug_issue_direct() argument
2627 while ((rq = rq_list_pop(&plug->mq_list))) { in blk_mq_plug_issue_direct()
2628 bool last = rq_list_empty(plug->mq_list); in blk_mq_plug_issue_direct()
2663 struct blk_plug *plug) in __blk_mq_flush_plug_list() argument
2667 q->mq_ops->queue_rqs(&plug->mq_list); in __blk_mq_flush_plug_list()
2670 static void blk_mq_dispatch_plug_list(struct blk_plug *plug, bool from_sched) in blk_mq_dispatch_plug_list() argument
2679 struct request *rq = rq_list_pop(&plug->mq_list); in blk_mq_dispatch_plug_list()
2690 } while (!rq_list_empty(plug->mq_list)); in blk_mq_dispatch_plug_list()
2692 plug->mq_list = requeue_list; in blk_mq_dispatch_plug_list()
2697 void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule) in blk_mq_flush_plug_list() argument
2701 if (rq_list_empty(plug->mq_list)) in blk_mq_flush_plug_list()
2703 plug->rq_count = 0; in blk_mq_flush_plug_list()
2705 if (!plug->multiple_queues && !plug->has_elevator && !from_schedule) { in blk_mq_flush_plug_list()
2708 rq = rq_list_peek(&plug->mq_list); in blk_mq_flush_plug_list()
2724 __blk_mq_flush_plug_list(q, plug)); in blk_mq_flush_plug_list()
2725 if (rq_list_empty(plug->mq_list)) in blk_mq_flush_plug_list()
2730 blk_mq_plug_issue_direct(plug, false)); in blk_mq_flush_plug_list()
2731 if (rq_list_empty(plug->mq_list)) in blk_mq_flush_plug_list()
2736 blk_mq_dispatch_plug_list(plug, from_schedule); in blk_mq_flush_plug_list()
2737 } while (!rq_list_empty(plug->mq_list)); in blk_mq_flush_plug_list()
2789 struct blk_plug *plug, in blk_mq_get_new_requests() argument
2808 if (plug) { in blk_mq_get_new_requests()
2809 data.nr_tags = plug->nr_ios; in blk_mq_get_new_requests()
2810 plug->nr_ios = 1; in blk_mq_get_new_requests()
2811 data.cached_rq = &plug->cached_rq; in blk_mq_get_new_requests()
2826 struct blk_plug *plug, struct bio **bio, unsigned int nsegs) in blk_mq_get_cached_request() argument
2830 if (!plug) in blk_mq_get_cached_request()
2832 rq = rq_list_peek(&plug->cached_rq); in blk_mq_get_cached_request()
2851 plug->cached_rq = rq_list_next(rq); in blk_mq_get_cached_request()
2883 struct blk_plug *plug = blk_mq_plug(bio); in blk_mq_submit_bio() local
2898 rq = blk_mq_get_cached_request(q, plug, &bio, nr_segs); in blk_mq_submit_bio()
2902 rq = blk_mq_get_new_requests(q, plug, bio, nr_segs); in blk_mq_submit_bio()
2926 if (plug) in blk_mq_submit_bio()
2927 blk_add_rq_to_plug(plug, rq); in blk_mq_submit_bio()