Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull SCSI updates from James Bottomley: "This is mostly update of the usual drivers: arcmsr, qla2xxx, lpfc, hisi_sas, target/iscsi and target/core. Additionally Christoph refactored gdth as part of the dma changes. The major mid-layer change this time is the removal of bidi commands and with them the whole of the osd/exofs driver and filesystem. This is a major simplification for block and mq in particular" * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (240 commits) scsi: cxgb4i: validate tcp sequence number only if chip version <= T5 scsi: cxgb4i: get pf number from lldi->pf scsi: core: replace GFP_ATOMIC with GFP_KERNEL in scsi_scan.c scsi: mpt3sas: Add missing breaks in switch statements scsi: aacraid: Fix missing break in switch statement scsi: kill command serial number scsi: csiostor: drop serial_number usage scsi: mvumi: use request tag instead of serial_number scsi: dpt_i2o: remove serial number usage scsi: st: osst: Remove negative constant left-shifts scsi: ufs-bsg: Allow reading descriptors scsi: ufs: Allow reading descriptor via raw upiu scsi: ufs-bsg: Change the calling convention for write descriptor scsi: ufs: Remove unused device quirks Revert "scsi: ufs: disable vccq if it's not needed by UFS device" scsi: megaraid_sas: Remove a bunch of set but not used variables scsi: clean obsolete return values of eh_timed_out scsi: sd: Optimal I/O size should be a multiple of physical block size scsi: MAINTAINERS: SCSI initiator and target tweaks scsi: fcoe: make use of fip_mode enum complete ...
This commit is contained in:
@@ -308,9 +308,6 @@ bool iscsit_check_np_match(
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Called with mutex np_lock held
|
||||
*/
|
||||
static struct iscsi_np *iscsit_get_np(
|
||||
struct sockaddr_storage *sockaddr,
|
||||
int network_transport)
|
||||
@@ -318,6 +315,8 @@ static struct iscsi_np *iscsit_get_np(
|
||||
struct iscsi_np *np;
|
||||
bool match;
|
||||
|
||||
lockdep_assert_held(&np_lock);
|
||||
|
||||
list_for_each_entry(np, &g_np_list, np_list) {
|
||||
spin_lock_bh(&np->np_thread_lock);
|
||||
if (np->np_thread_state != ISCSI_NP_THREAD_ACTIVE) {
|
||||
@@ -1195,7 +1194,7 @@ attach_cmd:
|
||||
}
|
||||
EXPORT_SYMBOL(iscsit_setup_scsi_cmd);
|
||||
|
||||
void iscsit_set_unsoliticed_dataout(struct iscsi_cmd *cmd)
|
||||
void iscsit_set_unsolicited_dataout(struct iscsi_cmd *cmd)
|
||||
{
|
||||
iscsit_set_dataout_sequence_values(cmd);
|
||||
|
||||
@@ -1203,7 +1202,7 @@ void iscsit_set_unsoliticed_dataout(struct iscsi_cmd *cmd)
|
||||
iscsit_start_dataout_timer(cmd, cmd->conn);
|
||||
spin_unlock_bh(&cmd->dataout_timeout_lock);
|
||||
}
|
||||
EXPORT_SYMBOL(iscsit_set_unsoliticed_dataout);
|
||||
EXPORT_SYMBOL(iscsit_set_unsolicited_dataout);
|
||||
|
||||
int iscsit_process_scsi_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
|
||||
struct iscsi_scsi_req *hdr)
|
||||
@@ -1237,7 +1236,7 @@ int iscsit_process_scsi_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
|
||||
*/
|
||||
if (!cmd->immediate_data) {
|
||||
if (!cmd->sense_reason && cmd->unsolicited_data)
|
||||
iscsit_set_unsoliticed_dataout(cmd);
|
||||
iscsit_set_unsolicited_dataout(cmd);
|
||||
if (!cmd->sense_reason)
|
||||
return 0;
|
||||
|
||||
@@ -1309,7 +1308,7 @@ after_immediate_data:
|
||||
target_put_sess_cmd(&cmd->se_cmd);
|
||||
return rc;
|
||||
} else if (cmd->unsolicited_data)
|
||||
iscsit_set_unsoliticed_dataout(cmd);
|
||||
iscsit_set_unsolicited_dataout(cmd);
|
||||
|
||||
} else if (immed_ret == IMMEDIATE_DATA_ERL1_CRC_FAILURE) {
|
||||
/*
|
||||
@@ -2241,28 +2240,25 @@ iscsit_handle_text_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
|
||||
rx_size = payload_length;
|
||||
if (payload_length) {
|
||||
u32 checksum = 0, data_crc = 0;
|
||||
u32 padding = 0, pad_bytes = 0;
|
||||
u32 padding = 0;
|
||||
int niov = 0, rx_got;
|
||||
struct kvec iov[3];
|
||||
struct kvec iov[2];
|
||||
|
||||
text_in = kzalloc(payload_length, GFP_KERNEL);
|
||||
rx_size = ALIGN(payload_length, 4);
|
||||
text_in = kzalloc(rx_size, GFP_KERNEL);
|
||||
if (!text_in)
|
||||
goto reject;
|
||||
|
||||
cmd->text_in_ptr = text_in;
|
||||
|
||||
memset(iov, 0, 3 * sizeof(struct kvec));
|
||||
memset(iov, 0, sizeof(iov));
|
||||
iov[niov].iov_base = text_in;
|
||||
iov[niov++].iov_len = payload_length;
|
||||
iov[niov++].iov_len = rx_size;
|
||||
|
||||
padding = ((-payload_length) & 3);
|
||||
if (padding != 0) {
|
||||
iov[niov].iov_base = &pad_bytes;
|
||||
iov[niov++].iov_len = padding;
|
||||
rx_size += padding;
|
||||
padding = rx_size - payload_length;
|
||||
if (padding)
|
||||
pr_debug("Receiving %u additional bytes"
|
||||
" for padding.\n", padding);
|
||||
}
|
||||
if (conn->conn_ops->DataDigest) {
|
||||
iov[niov].iov_base = &checksum;
|
||||
iov[niov++].iov_len = ISCSI_CRC_LEN;
|
||||
@@ -2274,9 +2270,9 @@ iscsit_handle_text_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
|
||||
goto reject;
|
||||
|
||||
if (conn->conn_ops->DataDigest) {
|
||||
iscsit_do_crypto_hash_buf(conn->conn_rx_hash, text_in,
|
||||
payload_length, padding,
|
||||
&pad_bytes, &data_crc);
|
||||
iscsit_do_crypto_hash_buf(conn->conn_rx_hash,
|
||||
text_in, rx_size, 0, NULL,
|
||||
&data_crc);
|
||||
|
||||
if (checksum != data_crc) {
|
||||
pr_err("Text data CRC32C DataDigest"
|
||||
@@ -2655,9 +2651,6 @@ static int iscsit_handle_immediate_data(
|
||||
return IMMEDIATE_DATA_NORMAL_OPERATION;
|
||||
}
|
||||
|
||||
/*
|
||||
* Called with sess->conn_lock held.
|
||||
*/
|
||||
/* #warning iscsi_build_conn_drop_async_message() only sends out on connections
|
||||
with active network interface */
|
||||
static void iscsit_build_conn_drop_async_message(struct iscsi_conn *conn)
|
||||
@@ -2666,6 +2659,8 @@ static void iscsit_build_conn_drop_async_message(struct iscsi_conn *conn)
|
||||
struct iscsi_conn *conn_p;
|
||||
bool found = false;
|
||||
|
||||
lockdep_assert_held(&conn->sess->conn_lock);
|
||||
|
||||
/*
|
||||
* Only send a Asynchronous Message on connections whos network
|
||||
* interface is still functional.
|
||||
@@ -4040,9 +4035,9 @@ static void iscsit_release_commands_from_conn(struct iscsi_conn *conn)
|
||||
struct se_cmd *se_cmd = &cmd->se_cmd;
|
||||
|
||||
if (se_cmd->se_tfo != NULL) {
|
||||
spin_lock(&se_cmd->t_state_lock);
|
||||
spin_lock_irq(&se_cmd->t_state_lock);
|
||||
se_cmd->transport_state |= CMD_T_FABRIC_STOP;
|
||||
spin_unlock(&se_cmd->t_state_lock);
|
||||
spin_unlock_irq(&se_cmd->t_state_lock);
|
||||
}
|
||||
}
|
||||
spin_unlock_bh(&conn->cmd_lock);
|
||||
|
Reference in New Issue
Block a user