mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-10 15:19:51 +00:00
target: Fix max_cmd_sn increment w/o cmdsn mutex regressions
Current for-next iscsi target is broken: commit 109e2381749c1cfd94a0d22b2b54142539024973 Author: Roland Dreier <roland@purestorage.com> Date: Thu Jul 23 14:53:32 2015 -0700 target: Drop iSCSI use of mutex around max_cmd_sn increment This patch fixes incorrect pr_debug() + atomic_inc_return() usage within iscsit_increment_maxcmdsn() code. Also fix funny iscsit_determine_maxcmdsn() usage and update iscsi_target_do_tx_login_io() code. Reported-by: Sagi Grimberg <sagig@mellanox.com> Cc: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Roland Dreier <roland@purestorage.com> Cc: Roland Dreier <roland@purestorage.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
4416f89b8c
commit
7dd03aca9d
@ -47,16 +47,19 @@ void iscsit_determine_maxcmdsn(struct iscsi_session *sess)
|
||||
* core_set_queue_depth_for_node().
|
||||
*/
|
||||
sess->cmdsn_window = se_nacl->queue_depth;
|
||||
atomic_set(&sess->max_cmd_sn, (u32) atomic_read(&sess->max_cmd_sn) + se_nacl->queue_depth - 1);
|
||||
atomic_add(se_nacl->queue_depth - 1, &sess->max_cmd_sn);
|
||||
}
|
||||
|
||||
void iscsit_increment_maxcmdsn(struct iscsi_cmd *cmd, struct iscsi_session *sess)
|
||||
{
|
||||
u32 max_cmd_sn;
|
||||
|
||||
if (cmd->immediate_cmd || cmd->maxcmdsn_inc)
|
||||
return;
|
||||
|
||||
cmd->maxcmdsn_inc = 1;
|
||||
|
||||
pr_debug("Updated MaxCmdSN to 0x%08x\n", atomic_inc_return(&sess->max_cmd_sn));
|
||||
max_cmd_sn = atomic_inc_return(&sess->max_cmd_sn);
|
||||
pr_debug("Updated MaxCmdSN to 0x%08x\n", max_cmd_sn);
|
||||
}
|
||||
EXPORT_SYMBOL(iscsit_increment_maxcmdsn);
|
||||
|
@ -366,8 +366,6 @@ static int iscsi_target_do_tx_login_io(struct iscsi_conn *conn, struct iscsi_log
|
||||
return -1;
|
||||
|
||||
login->rsp_length = 0;
|
||||
login_rsp->exp_cmdsn = cpu_to_be32(login_rsp->exp_cmdsn);
|
||||
login_rsp->max_cmdsn = cpu_to_be32(login_rsp->max_cmdsn);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user