0
点赞
收藏
分享

微信扫一扫

__blk_run_queue

早安地球 2023-06-04 阅读 19


1. aoe_end_request

2. blk_delay_work

3. blk_start_queue

4. blk_run_queue

5. __blk_drain_queue

6. blk_queue_bio

7. blk_insert_cloned_request

8. queue_unplugged

9. blk_post_runtime_resume

10. blk_execute_rq_nowait

11. cfq_rq_enqueued

12. cfq_kick_queue

13. __elv_add_request

__blk_run_queue



void __blk_run_queue(struct request_queue *q)
{
	if (unlikely(blk_queue_stopped(q)))
		return;

	__blk_run_queue_uncond(q);
 
 
 
inline void __blk_run_queue_uncond(struct request_queue *q)
{
	if (unlikely(blk_queue_dead(q)))
		return;

	/*
	 * Some request_fn implementations, e.g. scsi_request_fn(), unlock
	 * the queue lock internally. As a result multiple threads may be
	 * running such a request function concurrently. Keep track of the
	 * number of active request_fn invocations such that blk_drain_queue()
	 * can wait until all these request_fn calls have finished.
	 */
	q->request_fn_active++;
	q->request_fn(q);
	q->request_fn_active--;
}
EXPORT_SYMBOL_GPL(__blk_run_queue_uncond);

举报

相关推荐

0 条评论