lib/iscsi: add the conn in spdk_iscsi_pdu
Purpose: Prepare for the async writev usage for spdk iSCSI target application. Change-Id: Iff0e932159b0ad80be32aed3fc543b67d8fb8f51 Signed-off-by: Ziye Yang <ziye.yang@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/481644 Community-CI: SPDK CI Jenkins <sys_sgci@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
parent
be6aa42708
commit
377a016f69
@ -778,7 +778,7 @@ iscsi_send_logout_request(struct spdk_iscsi_conn *conn)
|
||||
struct spdk_iscsi_pdu *rsp_pdu;
|
||||
struct iscsi_bhs_async *rsph;
|
||||
|
||||
rsp_pdu = spdk_get_pdu();
|
||||
rsp_pdu = spdk_get_pdu(conn);
|
||||
assert(rsp_pdu != NULL);
|
||||
|
||||
rsph = (struct iscsi_bhs_async *)&rsp_pdu->bhs;
|
||||
@ -1238,7 +1238,7 @@ iscsi_conn_send_nopin(struct spdk_iscsi_conn *conn)
|
||||
SPDK_DEBUGLOG(SPDK_LOG_ISCSI, "StatSN=%u, ExpCmdSN=%u, MaxCmdSN=%u\n",
|
||||
conn->StatSN, conn->sess->ExpCmdSN,
|
||||
conn->sess->MaxCmdSN);
|
||||
rsp_pdu = spdk_get_pdu();
|
||||
rsp_pdu = spdk_get_pdu(conn);
|
||||
rsp = (struct iscsi_bhs_nop_in *) &rsp_pdu->bhs;
|
||||
rsp_pdu->data = NULL;
|
||||
/*
|
||||
|
@ -260,7 +260,7 @@ iscsi_reject(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *pdu,
|
||||
data_len += ISCSI_DIGEST_LEN;
|
||||
}
|
||||
|
||||
rsp_pdu = spdk_get_pdu();
|
||||
rsp_pdu = spdk_get_pdu(conn);
|
||||
if (rsp_pdu == NULL) {
|
||||
free(data);
|
||||
return -ENOMEM;
|
||||
@ -2148,7 +2148,7 @@ iscsi_pdu_hdr_op_login(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *pdu)
|
||||
return iscsi_reject(conn, pdu, ISCSI_REASON_PROTOCOL_ERROR);
|
||||
}
|
||||
|
||||
rsp_pdu = spdk_get_pdu();
|
||||
rsp_pdu = spdk_get_pdu(conn);
|
||||
if (rsp_pdu == NULL) {
|
||||
return SPDK_ISCSI_CONNECTION_FATAL;
|
||||
}
|
||||
@ -2371,7 +2371,7 @@ iscsi_pdu_payload_op_text(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *p
|
||||
SPDK_LOGDUMP(SPDK_LOG_ISCSI, "Negotiated Params", data, data_len);
|
||||
|
||||
/* response PDU */
|
||||
rsp_pdu = spdk_get_pdu();
|
||||
rsp_pdu = spdk_get_pdu(conn);
|
||||
if (rsp_pdu == NULL) {
|
||||
spdk_iscsi_param_free(params);
|
||||
free(data);
|
||||
@ -2491,7 +2491,7 @@ iscsi_pdu_hdr_op_logout(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *pdu
|
||||
}
|
||||
|
||||
/* response PDU */
|
||||
rsp_pdu = spdk_get_pdu();
|
||||
rsp_pdu = spdk_get_pdu(conn);
|
||||
if (rsp_pdu == NULL) {
|
||||
return SPDK_ISCSI_CONNECTION_FATAL;
|
||||
}
|
||||
@ -2573,7 +2573,7 @@ iscsi_send_r2t(struct spdk_iscsi_conn *conn,
|
||||
uint64_t fmt_lun;
|
||||
|
||||
/* R2T PDU */
|
||||
rsp_pdu = spdk_get_pdu();
|
||||
rsp_pdu = spdk_get_pdu(conn);
|
||||
if (rsp_pdu == NULL) {
|
||||
return SPDK_ISCSI_CONNECTION_FATAL;
|
||||
}
|
||||
@ -2892,7 +2892,7 @@ iscsi_send_datain(struct spdk_iscsi_conn *conn,
|
||||
primary = spdk_iscsi_task_get_primary(task);
|
||||
|
||||
/* DATA PDU */
|
||||
rsp_pdu = spdk_get_pdu();
|
||||
rsp_pdu = spdk_get_pdu(conn);
|
||||
rsph = (struct iscsi_bhs_data_in *)&rsp_pdu->bhs;
|
||||
rsp_pdu->data = task->scsi.iovs[0].iov_base + offset;
|
||||
rsp_pdu->data_buf_len = task->scsi.iovs[0].iov_len - offset;
|
||||
@ -3127,7 +3127,7 @@ void spdk_iscsi_task_response(struct spdk_iscsi_conn *conn,
|
||||
}
|
||||
|
||||
/* response PDU */
|
||||
rsp_pdu = spdk_get_pdu();
|
||||
rsp_pdu = spdk_get_pdu(conn);
|
||||
assert(rsp_pdu != NULL);
|
||||
rsph = (struct iscsi_bhs_scsi_resp *)&rsp_pdu->bhs;
|
||||
assert(task->scsi.sense_data_len <= sizeof(rsp_pdu->sense.data));
|
||||
@ -3471,7 +3471,7 @@ spdk_iscsi_task_mgmt_response(struct spdk_iscsi_conn *conn,
|
||||
|
||||
reqh = (struct iscsi_bhs_task_req *)&task->pdu->bhs;
|
||||
/* response PDU */
|
||||
rsp_pdu = spdk_get_pdu();
|
||||
rsp_pdu = spdk_get_pdu(conn);
|
||||
rsph = (struct iscsi_bhs_task_resp *)&rsp_pdu->bhs;
|
||||
rsph->opcode = ISCSI_OP_TASK_RSP;
|
||||
rsph->flags |= 0x80; /* bit 0 default to 1 */
|
||||
@ -3802,7 +3802,7 @@ iscsi_pdu_payload_op_nopout(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu
|
||||
}
|
||||
|
||||
/* response PDU */
|
||||
rsp_pdu = spdk_get_pdu();
|
||||
rsp_pdu = spdk_get_pdu(conn);
|
||||
if (rsp_pdu == NULL) {
|
||||
free(data);
|
||||
return SPDK_ISCSI_CONNECTION_FATAL;
|
||||
@ -4470,7 +4470,7 @@ iscsi_pdu_hdr_handle(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu *pdu)
|
||||
* return response code 0x020b to initiator.
|
||||
* */
|
||||
if (!conn->full_feature && conn->state == ISCSI_CONN_STATE_RUNNING) {
|
||||
rsp_pdu = spdk_get_pdu();
|
||||
rsp_pdu = spdk_get_pdu(conn);
|
||||
if (rsp_pdu == NULL) {
|
||||
return SPDK_ISCSI_CONNECTION_FATAL;
|
||||
}
|
||||
@ -4598,7 +4598,7 @@ iscsi_read_pdu(struct spdk_iscsi_conn *conn)
|
||||
case ISCSI_PDU_RECV_STATE_AWAIT_PDU_READY:
|
||||
assert(conn->pdu_in_progress == NULL);
|
||||
|
||||
conn->pdu_in_progress = spdk_get_pdu();
|
||||
conn->pdu_in_progress = spdk_get_pdu(conn);
|
||||
if (conn->pdu_in_progress == NULL) {
|
||||
return SPDK_ISCSI_CONNECTION_FATAL;
|
||||
}
|
||||
|
@ -183,6 +183,7 @@ struct spdk_iscsi_pdu {
|
||||
uint32_t data_buf_len;
|
||||
bool dif_insert_or_strip;
|
||||
struct spdk_dif_ctx dif_ctx;
|
||||
struct spdk_iscsi_conn *conn;
|
||||
TAILQ_ENTRY(spdk_iscsi_pdu) tailq;
|
||||
|
||||
|
||||
@ -432,7 +433,7 @@ uint32_t spdk_iscsi_pdu_calc_data_digest(struct spdk_iscsi_pdu *pdu);
|
||||
|
||||
/* Memory management */
|
||||
void spdk_put_pdu(struct spdk_iscsi_pdu *pdu);
|
||||
struct spdk_iscsi_pdu *spdk_get_pdu(void);
|
||||
struct spdk_iscsi_pdu *spdk_get_pdu(struct spdk_iscsi_conn *conn);
|
||||
int spdk_iscsi_conn_handle_queued_datain_tasks(struct spdk_iscsi_conn *conn);
|
||||
void spdk_iscsi_op_abort_task_set(struct spdk_iscsi_task *task,
|
||||
uint8_t function);
|
||||
|
@ -310,10 +310,11 @@ void spdk_put_pdu(struct spdk_iscsi_pdu *pdu)
|
||||
}
|
||||
}
|
||||
|
||||
struct spdk_iscsi_pdu *spdk_get_pdu(void)
|
||||
struct spdk_iscsi_pdu *spdk_get_pdu(struct spdk_iscsi_conn *conn)
|
||||
{
|
||||
struct spdk_iscsi_pdu *pdu;
|
||||
|
||||
assert(conn != NULL);
|
||||
pdu = spdk_mempool_get(g_spdk_iscsi.pdu_pool);
|
||||
if (!pdu) {
|
||||
SPDK_ERRLOG("Unable to get PDU\n");
|
||||
@ -323,6 +324,7 @@ struct spdk_iscsi_pdu *spdk_get_pdu(void)
|
||||
/* we do not want to zero out the last part of the structure reserved for AHS and sense data */
|
||||
memset(pdu, 0, offsetof(struct spdk_iscsi_pdu, ahs));
|
||||
pdu->ref = 1;
|
||||
pdu->conn = conn;
|
||||
|
||||
return pdu;
|
||||
}
|
||||
|
@ -95,10 +95,11 @@ spdk_put_pdu(struct spdk_iscsi_pdu *pdu)
|
||||
}
|
||||
|
||||
struct spdk_iscsi_pdu *
|
||||
spdk_get_pdu(void)
|
||||
spdk_get_pdu(struct spdk_iscsi_conn *conn)
|
||||
{
|
||||
struct spdk_iscsi_pdu *pdu;
|
||||
|
||||
assert(conn != NULL);
|
||||
if (g_pdu_pool_is_empty) {
|
||||
return NULL;
|
||||
}
|
||||
@ -110,6 +111,7 @@ spdk_get_pdu(void)
|
||||
|
||||
memset(pdu, 0, offsetof(struct spdk_iscsi_pdu, ahs));
|
||||
pdu->ref = 1;
|
||||
pdu->conn = conn;
|
||||
|
||||
return pdu;
|
||||
}
|
||||
|
@ -271,8 +271,8 @@ maxburstlength_test(void)
|
||||
struct spdk_iscsi_pdu *response_pdu;
|
||||
int rc;
|
||||
|
||||
req_pdu = spdk_get_pdu();
|
||||
data_out_pdu = spdk_get_pdu();
|
||||
req_pdu = spdk_get_pdu(&conn);
|
||||
data_out_pdu = spdk_get_pdu(&conn);
|
||||
|
||||
sess.ExpCmdSN = 0;
|
||||
sess.MaxCmdSN = 64;
|
||||
@ -370,7 +370,7 @@ underflow_for_read_transfer_test(void)
|
||||
dev.lun[0] = &lun;
|
||||
conn.dev = &dev;
|
||||
|
||||
pdu = spdk_get_pdu();
|
||||
pdu = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu != NULL);
|
||||
|
||||
scsi_req = (struct iscsi_bhs_scsi_req *)&pdu->bhs;
|
||||
@ -433,7 +433,7 @@ underflow_for_zero_read_transfer_test(void)
|
||||
dev.lun[0] = &lun;
|
||||
conn.dev = &dev;
|
||||
|
||||
pdu = spdk_get_pdu();
|
||||
pdu = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu != NULL);
|
||||
|
||||
scsi_req = (struct iscsi_bhs_scsi_req *)&pdu->bhs;
|
||||
@ -498,7 +498,7 @@ underflow_for_request_sense_test(void)
|
||||
dev.lun[0] = &lun;
|
||||
conn.dev = &dev;
|
||||
|
||||
pdu1 = spdk_get_pdu();
|
||||
pdu1 = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu1 != NULL);
|
||||
|
||||
scsi_req = (struct iscsi_bhs_scsi_req *)&pdu1->bhs;
|
||||
@ -588,7 +588,7 @@ underflow_for_check_condition_test(void)
|
||||
dev.lun[0] = &lun;
|
||||
conn.dev = &dev;
|
||||
|
||||
pdu = spdk_get_pdu();
|
||||
pdu = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu != NULL);
|
||||
|
||||
scsi_req = (struct iscsi_bhs_scsi_req *)&pdu->bhs;
|
||||
@ -652,7 +652,7 @@ add_transfer_task_test(void)
|
||||
TAILQ_INIT(&conn.queued_r2t_tasks);
|
||||
TAILQ_INIT(&conn.active_r2t_tasks);
|
||||
|
||||
pdu = spdk_get_pdu();
|
||||
pdu = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu != NULL);
|
||||
|
||||
pdu->data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH; /* 64K */
|
||||
@ -729,7 +729,7 @@ get_transfer_task_test(void)
|
||||
conn.sess = &sess;
|
||||
TAILQ_INIT(&conn.active_r2t_tasks);
|
||||
|
||||
pdu1 = spdk_get_pdu();
|
||||
pdu1 = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu1 != NULL);
|
||||
|
||||
pdu1->data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
|
||||
@ -739,7 +739,7 @@ get_transfer_task_test(void)
|
||||
rc = add_transfer_task(&conn, &task1);
|
||||
CU_ASSERT(rc == 0);
|
||||
|
||||
pdu2 = spdk_get_pdu();
|
||||
pdu2 = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu2 != NULL);
|
||||
|
||||
pdu2->data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
|
||||
@ -786,7 +786,7 @@ del_transfer_task_test(void)
|
||||
TAILQ_INIT(&conn.active_r2t_tasks);
|
||||
TAILQ_INIT(&conn.queued_r2t_tasks);
|
||||
|
||||
pdu1 = spdk_get_pdu();
|
||||
pdu1 = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu1 != NULL);
|
||||
|
||||
pdu1->data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
|
||||
@ -797,7 +797,7 @@ del_transfer_task_test(void)
|
||||
rc = add_transfer_task(&conn, &task1);
|
||||
CU_ASSERT(rc == 0);
|
||||
|
||||
pdu2 = spdk_get_pdu();
|
||||
pdu2 = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu2 != NULL);
|
||||
|
||||
pdu2->data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
|
||||
@ -808,7 +808,7 @@ del_transfer_task_test(void)
|
||||
rc = add_transfer_task(&conn, &task2);
|
||||
CU_ASSERT(rc == 0);
|
||||
|
||||
pdu3 = spdk_get_pdu();
|
||||
pdu3 = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu3 != NULL);
|
||||
|
||||
pdu3->data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
|
||||
@ -819,7 +819,7 @@ del_transfer_task_test(void)
|
||||
rc = add_transfer_task(&conn, &task3);
|
||||
CU_ASSERT(rc == 0);
|
||||
|
||||
pdu4 = spdk_get_pdu();
|
||||
pdu4 = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu4 != NULL);
|
||||
|
||||
pdu4->data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
|
||||
@ -830,7 +830,7 @@ del_transfer_task_test(void)
|
||||
rc = add_transfer_task(&conn, &task4);
|
||||
CU_ASSERT(rc == 0);
|
||||
|
||||
pdu5 = spdk_get_pdu();
|
||||
pdu5 = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu5 != NULL);
|
||||
|
||||
pdu5->data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
|
||||
@ -904,7 +904,7 @@ clear_all_transfer_tasks_test(void)
|
||||
|
||||
task1 = spdk_iscsi_task_get(&conn, NULL, NULL);
|
||||
SPDK_CU_ASSERT_FATAL(task1 != NULL);
|
||||
pdu1 = spdk_get_pdu();
|
||||
pdu1 = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu1 != NULL);
|
||||
|
||||
pdu1->data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
|
||||
@ -917,7 +917,7 @@ clear_all_transfer_tasks_test(void)
|
||||
rc = add_transfer_task(&conn, task1);
|
||||
CU_ASSERT(rc == 0);
|
||||
|
||||
mgmt_pdu1 = spdk_get_pdu();
|
||||
mgmt_pdu1 = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(mgmt_pdu1 != NULL);
|
||||
|
||||
mgmt_pdu1->cmd_sn = alloc_cmd_sn;
|
||||
@ -925,7 +925,7 @@ clear_all_transfer_tasks_test(void)
|
||||
|
||||
task2 = spdk_iscsi_task_get(&conn, NULL, NULL);
|
||||
SPDK_CU_ASSERT_FATAL(task2 != NULL);
|
||||
pdu2 = spdk_get_pdu();
|
||||
pdu2 = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu2 != NULL);
|
||||
|
||||
pdu2->data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
|
||||
@ -940,7 +940,7 @@ clear_all_transfer_tasks_test(void)
|
||||
|
||||
task3 = spdk_iscsi_task_get(&conn, NULL, NULL);
|
||||
SPDK_CU_ASSERT_FATAL(task3 != NULL);
|
||||
pdu3 = spdk_get_pdu();
|
||||
pdu3 = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu3 != NULL);
|
||||
|
||||
pdu3->data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
|
||||
@ -955,7 +955,7 @@ clear_all_transfer_tasks_test(void)
|
||||
|
||||
task4 = spdk_iscsi_task_get(&conn, NULL, NULL);
|
||||
SPDK_CU_ASSERT_FATAL(task4 != NULL);
|
||||
pdu4 = spdk_get_pdu();
|
||||
pdu4 = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu4 != NULL);
|
||||
|
||||
pdu4->data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
|
||||
@ -970,7 +970,7 @@ clear_all_transfer_tasks_test(void)
|
||||
|
||||
task5 = spdk_iscsi_task_get(&conn, NULL, NULL);
|
||||
SPDK_CU_ASSERT_FATAL(task5 != NULL);
|
||||
pdu5 = spdk_get_pdu();
|
||||
pdu5 = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu5 != NULL);
|
||||
|
||||
pdu5->data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
|
||||
@ -983,7 +983,7 @@ clear_all_transfer_tasks_test(void)
|
||||
rc = add_transfer_task(&conn, task5);
|
||||
CU_ASSERT(rc == 0);
|
||||
|
||||
mgmt_pdu2 = spdk_get_pdu();
|
||||
mgmt_pdu2 = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(mgmt_pdu2 != NULL);
|
||||
|
||||
mgmt_pdu2->cmd_sn = alloc_cmd_sn;
|
||||
@ -991,7 +991,7 @@ clear_all_transfer_tasks_test(void)
|
||||
|
||||
task6 = spdk_iscsi_task_get(&conn, NULL, NULL);
|
||||
SPDK_CU_ASSERT_FATAL(task6 != NULL);
|
||||
pdu6 = spdk_get_pdu();
|
||||
pdu6 = spdk_get_pdu(&conn);
|
||||
SPDK_CU_ASSERT_FATAL(pdu6 != NULL);
|
||||
|
||||
pdu6->data_segment_len = SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH;
|
||||
|
Loading…
x
Reference in New Issue
Block a user