u64 tag;
u32 exp_data_len, data_first, data_num, data_direction, prot_first;
unsigned out, in, i;
- int head, ret, data_niov, prot_niov, prot_bytes;
+ int head, ret, data_niov, prot_niov, prot_bytes, c = 0;
size_t req_size;
u16 lun;
u8 *target, *lunp, task_attr;
vhost_disable_notify(&vs->dev, vq);
- for (;;) {
+ do {
head = vhost_get_vq_desc(vq, vq->iov,
ARRAY_SIZE(vq->iov), &out, &in,
NULL, NULL);
*/
INIT_WORK(&cmd->work, tcm_vhost_submission_work);
queue_work(tcm_vhost_workqueue, &cmd->work);
- }
+ } while (likely(!vhost_exceeds_weight(vq, ++c, 0)));
mutex_unlock(&vq->mutex);
return;