dma_drain_needed_fn *dma_drain_needed;conststructblk_mq_ops*mq_ops;/* sw queues */structblk_mq_ctx__percpu*queue_ctx;unsignedintnr_queues;unsignedintqueue_depth;/* hw dispatch queues */structblk_mq_hw_ctx**queue_hw_ctx;unsignedintnr_hw_queues;structbacking_dev_info*backing_dev_info;/...
这个request_queue 的初始化过程在 blk_mq_init_queue 中。它会调用 blk_mq_init_allocated_queue->blk_queue_make_request。在这里面,我们可以将 make_request_fn 函数设置为 blk_mq_make_request,也就是说,一旦上层有写入请求,我们就通过 blk_mq_make_request 这个函数,将请求放入 request_queue 队列中。 ...
blk_mq_complete_request(req, req->errors); req_done = true; } if (unlikely(virtqueue_is_broken(vq))) break; } while (!virtqueue_enable_cb(vq)); /* In case queue is stopped waiting for more buffers. */ if (req_done) blk_mq_start_stopped_hw_queues(vblk->disk->queue...
blk_start_request voidblk_start_request(struct request *req){blk_dequeue_request(req); /* * We are now handing the request to the hardware, initialize * resid_len to full count and add the timeout han clementine 原创 sunlei0625 2023-05-30 00:16:33 ...
blk_mq_init_queue blk_mq_init_sq_queue blk_mq_map_queues blk_mq_pci_map_queues blk_mq_quiesce_queue blk_mq_request_completed blk_mq_requeue_request blk_mq_rq_cpu blk_mq_run_hw_queues blk_mq_start_request blk_mq_start_stopped_hw_queues blk_mq_stop_hw_queue blk_...
> The bug is that the sg_io issued to scsi_blk_mq would succeed even if > LLD wants to error out those requests. > > Let me explain the scenario in more details. > > Setup: > 0. Host kernel configuration > - 4.19.9, 4.20.16 ...
I am trying to run Linux on aria10 device but boot got stuck on the line Waiting for root device /dev/mmcblk0p2… here is the content of putty U-Boot
EXPORT_SYMBOL(blk_mq_start_request); staticvoid__blk_mq_requeue_request(structrequest*rq) { structrequest_queue*q=rq->q; trace_block_rq_requeue(q,rq); clear_bit(REQ_ATOM_STARTED,&rq->atomic_flags); if(q->dma_drain_size&&blk_rq_bytes(rq)) ...
Expand All@@ -205,9 +205,9 @@ static int virtio_queue_rq(struct blk_mq_hw_ctx *hctx, blk_mq_start_request(req); num=blk_rq_map_sg(hctx->queue,vbr->req,vbr->sg); num=blk_rq_map_sg(hctx->queue,req,vbr->sg); if(num) { ...
static void __blk_mq_free_request(struct request *rq) { struct request_queue *q = rq->q; struct blk_mq_ctx *ctx = rq->mq_ctx; struct blk_mq_hw_ctx *hctx = blk_mq_map_queue(q, ctx->cpu); const int sched_tag = rq->internal_tag; if (rq->tag != -1) blk_mq_put_tag...