iscsi-target: Initial traditional TCP conversion to iscsit_transport
This patch performs the initial conversion of existing traditional iscsi to use iscsit_transport API callers. This includes: - iscsi-np cleanups for iscsit_transport_type - Add iscsi-np transport calls w/ ->iscsit_setup_up() and ->iscsit_free_np() - Convert login thread process context to use ->iscsit_accept_np() for connections with pre-allocated struct iscsi_conn - Convert existing socket accept code to iscsit_accept_np() - Convert login RX/TX callers to use ->iscsit_get_login_rx() and ->iscsit_put_login_tx() to exchange request/response PDUs - Convert existing socket login RX/TX calls into iscsit_get_login_rx() and iscsit_put_login_tx() - Change iscsit_close_connection() to invoke ->iscsit_free_conn() + iscsit_put_transport() calls. - Add iscsit_register_transport() + iscsit_unregister_transport() calls to module init/exit v4 changes: - Add missing iscsit_put_transport() call in iscsi_target_setup_login_socket() failure case v2 changes: - Update module init/exit to use register_transport() + unregister_transport() Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
#include <target/target_core_base.h>
|
||||
#include <target/target_core_fabric.h>
|
||||
#include <target/target_core_configfs.h>
|
||||
#include <target/iscsi/iscsi_transport.h>
|
||||
|
||||
#include "iscsi_target_core.h"
|
||||
#include "iscsi_target_parameters.h"
|
||||
@@ -1226,34 +1227,19 @@ send_datacrc:
|
||||
*/
|
||||
int iscsit_tx_login_rsp(struct iscsi_conn *conn, u8 status_class, u8 status_detail)
|
||||
{
|
||||
u8 iscsi_hdr[ISCSI_HDR_LEN];
|
||||
int err;
|
||||
struct kvec iov;
|
||||
struct iscsi_login_rsp *hdr;
|
||||
struct iscsi_login *login = conn->conn_login;
|
||||
|
||||
login->login_failed = 1;
|
||||
iscsit_collect_login_stats(conn, status_class, status_detail);
|
||||
|
||||
memset(&iov, 0, sizeof(struct kvec));
|
||||
memset(&iscsi_hdr, 0x0, ISCSI_HDR_LEN);
|
||||
|
||||
hdr = (struct iscsi_login_rsp *)&iscsi_hdr;
|
||||
hdr = (struct iscsi_login_rsp *)&login->rsp[0];
|
||||
hdr->opcode = ISCSI_OP_LOGIN_RSP;
|
||||
hdr->status_class = status_class;
|
||||
hdr->status_detail = status_detail;
|
||||
hdr->itt = conn->login_itt;
|
||||
|
||||
iov.iov_base = &iscsi_hdr;
|
||||
iov.iov_len = ISCSI_HDR_LEN;
|
||||
|
||||
PRINT_BUFF(iscsi_hdr, ISCSI_HDR_LEN);
|
||||
|
||||
err = tx_data(conn, &iov, 1, ISCSI_HDR_LEN);
|
||||
if (err != ISCSI_HDR_LEN) {
|
||||
pr_err("tx_data returned less than expected\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return conn->conn_transport->iscsit_put_login_tx(conn, login, 0);
|
||||
}
|
||||
|
||||
void iscsit_print_session_params(struct iscsi_session *sess)
|
||||
@@ -1432,7 +1418,8 @@ void iscsit_collect_login_stats(
|
||||
strcpy(ls->last_intr_fail_name,
|
||||
(intrname ? intrname->value : "Unknown"));
|
||||
|
||||
ls->last_intr_fail_ip_family = conn->sock->sk->sk_family;
|
||||
ls->last_intr_fail_ip_family = conn->login_family;
|
||||
|
||||
snprintf(ls->last_intr_fail_ip_addr, IPV6_ADDRESS_SPACE,
|
||||
"%s", conn->login_ip);
|
||||
ls->last_fail_time = get_jiffies_64();
|
||||
|
Reference in New Issue
Block a user