* or when attempting a merge, because blk_schedule_flush_list() will only flush * the plug list when the task sleeps by itself. For details, please see * schedule() where blk_schedule_flush_plug() is called. */ struct blk_plug { unsigned long magic; /* detect uninitialized use-cases...
percpu_ref_get() call at the start of blk_mq_flush_plug_list() and one percpu_ref_put() call at the end of the same function? Thanks, Bart.
生成request后,将request插入请求队列中,分下面几种情况 1.如果是fua/flush请求,则将request插入到flush队列,并调用blk_mq_run_hw_queue 启动请求派发 2.如果当前线程正在做IO plug且块设备是硬件单队列的(nr_hw_queues=1),则将request插入到当前线程的plug list 3.如果配置了调度器,则调用blk_mq_sched_insert...
* more they have to dynamically allocate it. Flush requests are * never put on the IO scheduler. So let the flush fields share * space with the elevator data.*/union {struct{structio_cq *icq;void*priv[2]; } elv;struct{ unsignedintseq;structlist_head list; rq_end_io_fn*saved_end_...
* intensive flush workloads can benefit in case of NCQ HW. */ blk_mq_request_bypass_insert(rq, true); blk_mq_request_bypass_insert(rq, BLK_MQ_INSERT_AT_HEAD); } else if (q->elevator) { LIST_HEAD(list);@@ -2670,7 +2670,7 @@ static void blk_mq_try_issue_directly(struct blk...
blk_start_plug blk_status_to_errno blk_sync_queue blk_unregister_region blk_update_request blk_verify_command blkdev_get_by_dev blkdev_get_by_path blkdev_issue_flush blkdev_put block_is_partially_uptodate block_write_full_page blocking_notifier_call_chain blocking_notifier_cha...
op_is_flush(rq->cmd_flags) && if ((rq->rq_flags & RQF_USE_SCHED) && q->elevator->type->ops.finish_request) q->elevator->type->ops.finish_request(rq); @@ -1268,7 +1273,7 @@ static void blk_add_rq_to_plug(struct blk_plug *plug, struct request *rq) if (!plug->multiple...
示例1: list_move_tail ▲点赞 9▼ struct request *blk_do_flush(struct request_queue *q, struct request *rq){unsignedintfflags = q->flush_flags;/* may change, cache it */boolhas_flush = fflags & REQ_FLUSH, has_fua = fflags & REQ_FUA;booldo_preflush = has_flush && (rq->cmd_...
Flush fitting exterior door handles with chrome Stereo system with 8 speakers USB-C socket x1 in front Dark tinted acoustic rear windows with heated rear windscreen Electrically folding door mirrors Twin front cupholders 1x front passenger seat isofix mounting points includes top tether ...
blk_flush_plug(current->plug,false); /* * We need to be able to enter a frozen queue, similar to how * timeouts also need to do that. If that is blocked, then we can * have pending IO when a queue freeze is started, and then the ...