vhost_scsi: fix scsi_task leak
The task was being aborted before setting it's free_cb. This results in i.e. not allowing vhost device to stop it's pollers, as it would endlessly wait for this task to finish. Change-Id: I0de2d1f21da109db1045e433c07f153316e09997 Signed-off-by: Dariusz Stojaczyk <dariuszx.stojaczyk@intel.com> Reviewed-on: https://review.gerrithub.io/381866 Reviewed-by: Jim Harris <james.r.harris@intel.com> Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
29a33dab93
commit
88f6b9a66e
@ -406,6 +406,8 @@ task_data_setup(struct spdk_vhost_scsi_task *task,
|
||||
uint32_t desc_table_len, len = 0;
|
||||
int rc;
|
||||
|
||||
spdk_scsi_task_construct(&task->scsi, spdk_vhost_scsi_task_cpl, spdk_vhost_scsi_task_free_cb, NULL);
|
||||
|
||||
rc = spdk_vhost_vq_get_desc(vdev, task->vq, task->req_idx, &desc, &desc_table, &desc_table_len);
|
||||
/* First descriptor must be readable */
|
||||
if (rc != 0 || spdk_unlikely(spdk_vhost_vring_desc_is_wr(desc))) {
|
||||
@ -414,7 +416,6 @@ task_data_setup(struct spdk_vhost_scsi_task *task,
|
||||
goto abort_task;
|
||||
}
|
||||
|
||||
spdk_scsi_task_construct(&task->scsi, spdk_vhost_scsi_task_cpl, spdk_vhost_scsi_task_free_cb, NULL);
|
||||
*req = spdk_vhost_gpa_to_vva(vdev, desc->addr);
|
||||
|
||||
/* Each request must have at least 2 descriptors (e.g. request and response) */
|
||||
|
Loading…
Reference in New Issue
Block a user