lib/iscsi: Add real callback for DATAIN PDU complete

Since only after DATAIN pdu sending out, we can have
free slot to handle queued data in tasks.

Signed-off-by: Ziye Yang <ziye.yang@intel.com>
Change-Id: I49a52597e8660453ea90c5960d020eb53f81265d
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/482048
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Ziye Yang 2020-01-19 21:22:35 +08:00 committed by Jim Harris
parent 098d32273a
commit d8d1168c06
2 changed files with 9 additions and 2 deletions

View File

@ -313,7 +313,6 @@ spdk_iscsi_conn_free_pdu(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *pd
if (pdu->task) {
spdk_iscsi_task_put(pdu->task);
spdk_iscsi_conn_handle_queued_datain_tasks(conn);
}
spdk_put_pdu(pdu);

View File

@ -2881,6 +2881,14 @@ get_transfer_task(struct spdk_iscsi_conn *conn, uint32_t transfer_tag)
return NULL;
}
static void
spdk_iscsi_conn_datain_pdu_complete(void *arg)
{
struct spdk_iscsi_conn *conn = arg;
spdk_iscsi_conn_handle_queued_datain_tasks(conn);
}
static int
iscsi_send_datain(struct spdk_iscsi_conn *conn,
struct spdk_iscsi_task *task, int datain_flag,
@ -2983,7 +2991,7 @@ iscsi_send_datain(struct spdk_iscsi_conn *conn,
}
}
spdk_iscsi_conn_write_pdu(conn, rsp_pdu, spdk_iscsi_conn_pdu_generic_complete, NULL);
spdk_iscsi_conn_write_pdu(conn, rsp_pdu, spdk_iscsi_conn_datain_pdu_complete, conn);
return DataSN;
}