blk_init_queue_node(request_fn_proc *rfn, spinlock_t *lock, int node_id) { struct request_queue *uninit_q, *q; uninit_q = blk_alloc_queue_node(GFP_KERNEL, node_id); if (!uninit_q) return NULL; q = blk_init_allocated_queue(uninit_q, rfn, lock); if (!q) blk_cleanup_queue...
blk_mq_init_queue:初始化IO请求队列--request_queue。函数的主要流程如下: 调用blk_alloc_queue_node分配请求队列的内存,分配的内存节点与设备连接的NUMA节点一致,避免远端内存访问问题。 调用blk_mq_init_allocated_queue初始化分配的请求队列(request_queue),blk-mq的request_queue中包含两层队列,即percpu的软件队...
这个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 队列中。 ...
*/structlist_headqueue_head;structrequest*last_merge;structelevator_queue*elevator;structblk_queue_stats*stats;structrq_qos*rq_qos;make_request_fn *make_request_fn; dma_drain_needed_fn *dma_drain_needed;conststructblk_mq_ops*mq_ops;/* sw queues */structblk_mq_ctx__percpu*queue_ctx;unsign...
@@ -2862,6 +2879,9 @@ struct request_queue *blk_mq_init_allocated_queue(struct blk_mq_tag_set *set, if (!q->queue_hw_ctx) goto err_sys_init; + INIT_LIST_HEAD(&q->unused_hctx_list); + spin_lock_init(&q->unused_hctx_lock); ...
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...
Development version of the Upstream MultiPath TCP Linux kernel 🐧 - mptcp_net-next/include/linux/blk-mq.h at 807404d66fcf898d4bcc6a3e3edb07ffd5b88400 · multipath-tcp/mptcp_net-next
[ 0.277960] fuse: init (API version 7.32) [ 0.464220] Key type asymmetric registered [ 0.464251] Asymmetric key parser 'x509' registered [ 0.464365] bounce: pool size: 64 pages [ 0.464396] io scheduler mq-deadline registered [ 0.464413] io scheduler kyber registered [ 0.473305] pwm-backli...
[ 0.277960] fuse: init (API version 7.32) [ 0.464220] Key type asymmetric registered [ 0.464251] Asymmetric key parser 'x509' registered [ 0.464365] bounce: pool size: 64 pages [ 0.464396] io scheduler mq-deadline registered [ 0.464413] io scheduler kyber registered [ 0.473305] pwm-backli...
disk_index_error: ida_free(&rssd_index_ida, index); ida_get_error: blk_cleanup_disk(dd->disk); put_disk(dd->disk); block_queue_alloc_init_error: blk_mq_free_tag_set(&dd->tags); block_queue_alloc_tag_error:2 changes: 1 addition & 1 deletion 2 drivers/block/n64cart.c Original...