Lines Matching refs:task
72 enqueue_task(struct vhost_blk_task *task) in enqueue_task() argument
74 struct vhost_blk_queue *vq = task->vq; in enqueue_task()
77 rte_vhost_set_last_inflight_io_split(task->ctrlr->vid, in enqueue_task()
78 vq->id, task->req_idx); in enqueue_task()
87 used->ring[used->idx & (vq->vring.size - 1)].id = task->req_idx; in enqueue_task()
88 used->ring[used->idx & (vq->vring.size - 1)].len = task->data_len; in enqueue_task()
93 rte_vhost_clr_inflight_desc_split(task->ctrlr->vid, in enqueue_task()
94 vq->id, used->idx, task->req_idx); in enqueue_task()
99 rte_vhost_vring_call(task->ctrlr->vid, vq->id); in enqueue_task()
103 enqueue_task_packed(struct vhost_blk_task *task) in enqueue_task_packed() argument
105 struct vhost_blk_queue *vq = task->vq; in enqueue_task_packed()
108 rte_vhost_set_last_inflight_io_packed(task->ctrlr->vid, vq->id, in enqueue_task_packed()
109 task->inflight_idx); in enqueue_task_packed()
112 desc->id = task->buffer_id; in enqueue_task_packed()
122 rte_vhost_clr_inflight_desc_packed(task->ctrlr->vid, vq->id, in enqueue_task_packed()
123 task->inflight_idx); in enqueue_task_packed()
125 vq->last_used_idx += task->chain_num; in enqueue_task_packed()
134 rte_vhost_vring_call(task->ctrlr->vid, vq->id); in enqueue_task_packed()
307 process_blk_task(struct vhost_blk_task *task) in process_blk_task() argument
311 if (task->vq->packed_ring) { in process_blk_task()
315 inflight_ring = &task->vq->inflight_ring; in process_blk_task()
320 if (setup_iovs_from_inflight_desc(task->ctrlr, task->vq, in process_blk_task()
321 task->req_idx, task->iovs, &task->iovs_cnt, in process_blk_task()
327 if (setup_iovs_from_descs_packed(task->ctrlr, task->vq, in process_blk_task()
328 task->req_idx, task->iovs, &task->iovs_cnt, in process_blk_task()
335 if (setup_iovs_from_descs_split(task->ctrlr, task->vq, in process_blk_task()
336 task->req_idx, task->iovs, &task->iovs_cnt, &payload)) { in process_blk_task()
343 task->req = (struct virtio_blk_outhdr *)task->iovs[0].iov_base; in process_blk_task()
344 assert(sizeof(*task->req) == task->iovs[0].iov_len); in process_blk_task()
347 task->status = (uint8_t *)task->iovs[task->iovs_cnt - 1].iov_base; in process_blk_task()
348 assert(sizeof(*task->status) == task->iovs[task->iovs_cnt - 1].iov_len); in process_blk_task()
351 task->data_len = payload - task->iovs[0].iov_len - in process_blk_task()
352 task->iovs[task->iovs_cnt - 1].iov_len; in process_blk_task()
354 if (vhost_bdev_process_blk_commands(task->ctrlr->bdev, task)) in process_blk_task()
356 *task->status = VIRTIO_BLK_S_IOERR; in process_blk_task()
359 *task->status = VIRTIO_BLK_S_OK; in process_blk_task()
361 if (task->vq->packed_ring) in process_blk_task()
362 enqueue_task_packed(task); in process_blk_task()
364 enqueue_task(task); in process_blk_task()
368 blk_task_init(struct vhost_blk_task *task) in blk_task_init() argument
370 task->iovs_cnt = 0; in blk_task_init()
371 task->data_len = 0; in blk_task_init()
372 task->req = NULL; in blk_task_init()
373 task->status = NULL; in blk_task_init()
381 struct vhost_blk_task *task; in submit_inflight_vq() local
405 task = &vq->tasks[task_idx]; in submit_inflight_vq()
407 task->req_idx = desc_idx; in submit_inflight_vq()
408 task->chain_num = desc[desc_idx].num; in submit_inflight_vq()
409 task->buffer_id = task_idx; in submit_inflight_vq()
410 task->inflight_idx = desc_idx; in submit_inflight_vq()
422 task = &vq->tasks[desc_idx]; in submit_inflight_vq()
424 blk_task_init(task); in submit_inflight_vq()
425 process_blk_task(task); in submit_inflight_vq()
491 struct vhost_blk_task *task; in process_vq() local
499 task = &vq->tasks[task_idx]; in process_vq()
501 blk_task_init(task); in process_vq()
502 task->req_idx = req_idx; in process_vq()
503 task->chain_num = chain_num; in process_vq()
504 task->buffer_id = task_idx; in process_vq()
507 rte_vhost_set_inflight_desc_packed(task->ctrlr->vid, in process_vq()
509 task->req_idx, in process_vq()
511 &task->inflight_idx); in process_vq()
513 process_blk_task(task); in process_vq()
520 task = &vq->tasks[desc_idx]; in process_vq()
522 blk_task_init(task); in process_vq()
523 rte_vhost_set_inflight_desc_split(task->ctrlr->vid, in process_vq()
525 task->req_idx); in process_vq()
526 process_blk_task(task); in process_vq()