lib/iscsi: Move Logout check from iscsi_conn_handle_incoming_pdus() to spdk_iscsi_read_pdu()
Move logout check from iscsi_conn_handle_incoming_pdus() to spdk_iscsi_read_pdu() to introduce state machine into receive incoming PDUs processing. Besides, remove a debug log because similar debug log is already collected in spdk_iscsi_conn_read_data(). Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Change-Id: I11ee800eb1fd60796669d5390bd3cd1031066ca7 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/470285 Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Paul Luse <paul.e.luse@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
83a4890158
commit
df46a0b893
@ -1405,14 +1405,7 @@ iscsi_conn_handle_incoming_pdus(struct spdk_iscsi_conn *conn)
|
|||||||
if (rc == 0) {
|
if (rc == 0) {
|
||||||
break;
|
break;
|
||||||
} else if (rc < 0) {
|
} else if (rc < 0) {
|
||||||
SPDK_DEBUGLOG(SPDK_LOG_ISCSI, "Failed to read pdu, error=%d\n", rc);
|
return rc;
|
||||||
return SPDK_ISCSI_CONNECTION_FATAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (conn->is_logged_out) {
|
|
||||||
SPDK_ERRLOG("pdu received after logout\n");
|
|
||||||
spdk_put_pdu(pdu);
|
|
||||||
return SPDK_ISCSI_CONNECTION_FATAL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = spdk_iscsi_execute(conn, pdu);
|
rc = spdk_iscsi_execute(conn, pdu);
|
||||||
|
@ -4683,7 +4683,6 @@ spdk_iscsi_read_pdu(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu **_pdu)
|
|||||||
} else {
|
} else {
|
||||||
SPDK_ERRLOG("Data(%d) > MaxSegment(%d)\n",
|
SPDK_ERRLOG("Data(%d) > MaxSegment(%d)\n",
|
||||||
data_len, SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH);
|
data_len, SPDK_ISCSI_MAX_RECV_DATA_SEGMENT_LENGTH);
|
||||||
rc = SPDK_ISCSI_CONNECTION_FATAL;
|
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
pdu->mobj = spdk_mempool_get(pool);
|
pdu->mobj = spdk_mempool_get(pool);
|
||||||
@ -4741,7 +4740,6 @@ spdk_iscsi_read_pdu(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu **_pdu)
|
|||||||
rc = MATCH_DIGEST_WORD(pdu->header_digest, crc32c);
|
rc = MATCH_DIGEST_WORD(pdu->header_digest, crc32c);
|
||||||
if (rc == 0) {
|
if (rc == 0) {
|
||||||
SPDK_ERRLOG("header digest error (%s)\n", conn->initiator_name);
|
SPDK_ERRLOG("header digest error (%s)\n", conn->initiator_name);
|
||||||
rc = SPDK_ISCSI_CONNECTION_FATAL;
|
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4749,19 +4747,24 @@ spdk_iscsi_read_pdu(struct spdk_iscsi_conn *conn, struct spdk_iscsi_pdu **_pdu)
|
|||||||
crc32c = spdk_iscsi_pdu_calc_data_digest(pdu);
|
crc32c = spdk_iscsi_pdu_calc_data_digest(pdu);
|
||||||
rc = MATCH_DIGEST_WORD(pdu->data_digest, crc32c);
|
rc = MATCH_DIGEST_WORD(pdu->data_digest, crc32c);
|
||||||
if (rc == 0) {
|
if (rc == 0) {
|
||||||
rc = SPDK_ISCSI_CONNECTION_FATAL;
|
|
||||||
SPDK_ERRLOG("data digest error (%s)\n", conn->initiator_name);
|
SPDK_ERRLOG("data digest error (%s)\n", conn->initiator_name);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (conn->is_logged_out) {
|
||||||
|
SPDK_ERRLOG("pdu received after logout\n");
|
||||||
|
spdk_put_pdu(pdu);
|
||||||
|
return SPDK_ISCSI_CONNECTION_FATAL;
|
||||||
|
}
|
||||||
|
|
||||||
*_pdu = pdu;
|
*_pdu = pdu;
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
error:
|
error:
|
||||||
spdk_put_pdu(pdu);
|
spdk_put_pdu(pdu);
|
||||||
conn->pdu_in_progress = NULL;
|
conn->pdu_in_progress = NULL;
|
||||||
return rc;
|
return SPDK_ISCSI_CONNECTION_FATAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
|
Loading…
Reference in New Issue
Block a user