- bool used_wrap_counter;
- int req_idx, ret;
- uint16_t used_idx;
- uint64_t chunck_len;
- struct vhost_blk_queue *blk_vq;
- struct rte_vhost_ring_inflight *inflight_vq;
- struct rte_vhost_resubmit_info *resubmit_info;
- struct rte_vhost_vring *vq;
- struct inflight_blk_task *task;
- struct vhost_blk_task *blk_task;
- struct rte_vhost_inflight_info_packed *inflight_info;
-
- blk_vq = &ctrlr->bdev->queues[q_idx];
- vq = &blk_vq->vq;
- inflight_vq = &blk_vq->inflight_vq;
- resubmit_info = inflight_vq->resubmit_inflight;
- inflight_info = inflight_vq->inflight_packed;
- used_idx = blk_vq->last_used_idx;
- used_wrap_counter = blk_vq->used_wrap_counter;
-
- task = rte_malloc(NULL, sizeof(*task), 0);
- if (!task) {
- fprintf(stderr, "failed to allocate memory\n");
- return;
- }
- blk_task = &task->blk_task;
- blk_task->vq = vq;
- blk_task->bdev = ctrlr->bdev;
- task->inflight_packed = inflight_vq->inflight_packed;
-
- while (resubmit_info->resubmit_num-- > 0) {
- req_idx = resubmit_info->resubmit_num;
- blk_task->head_idx =
- resubmit_info->resubmit_list[req_idx].index;
- task->inflight_desc =
- &inflight_info->desc[blk_task->head_idx];
- task->blk_task.iovs_cnt = 0;
- task->blk_task.data_len = 0;
- task->blk_task.req = NULL;
- task->blk_task.status = NULL;
-
- /* update the avail idx too
- * as it's initial value equals to used idx
- */
- blk_vq->last_avail_idx += task->inflight_desc->num;
- if (blk_vq->last_avail_idx >= vq->size) {
- blk_vq->last_avail_idx -= vq->size;
- blk_vq->avail_wrap_counter =
- !blk_vq->avail_wrap_counter;
- }