+1
−6
Loading
Due to the network issue, spdk_iscsi_conn_free_pdu in spdk_iscsi_conn_flush_pdus_internal will not be executed. So consider the pdu free, we should call spdk_iscsi_conn_free_pdu in spdk_iscsi_conn_free_tasks. Actually, for the task which in queued_datain_task, we have the following case: 1 The task is not sent to the scsi layer: it means that the task is not freed, so we should call spdk_iscsi_task_put here. 2 The task is sent to the scsi layer, but no subtasks are sent to the scsi layer: It means that the call back function (spdk_iscsi_task_cpl) will be called, but since it will have the subtask, so spdk_iscsi_task_put will not be called, thus, we should call spdk_iscsi_task_put here. 3 The task is sent to the scsi layer, and some subtasks are also sent to the scsi layer: It also mean that the spdk_iscsi_task_put will not be called in spdk_iscsi_task_cpl, and not all the subtasks will be finished, so the father task will not be freed, so we should still call spdk_iscsi_task_put here. 4 The task is sent to the scsi layer, and all the subtasks are also sent to the scsi layer, thus this task is not in the queued_data_in_task. So according to 1-4, we should call spdk_iscsi_task_put here, and also decrease the data_in_cnt; Change-Id: Icb13df1ae07f6eea0247d45f4a0397edc4aa2500 Signed-off-by:Ziye Yang <optimistyzy@gmail.com> Reviewed-on: https://review.gerrithub.io/420875 Tested-by:
SPDK CI Jenkins <sys_sgci@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by:
Jim Harris <james.r.harris@intel.com> Reviewed-by:
Changpeng Liu <changpeng.liu@intel.com>