Commit 7dd03aca authored by Roland Dreier's avatar Roland Dreier Committed by Nicholas Bellinger

target: Fix max_cmd_sn increment w/o cmdsn mutex regressions

Current for-next iscsi target is broken:

commit 109e2381
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: default avatarSagi Grimberg <sagig@mellanox.com>
Cc: Sagi Grimberg <sagig@mellanox.com>
Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
Cc: Roland Dreier <roland@purestorage.com>
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent 4416f89b
...@@ -47,16 +47,19 @@ void iscsit_determine_maxcmdsn(struct iscsi_session *sess) ...@@ -47,16 +47,19 @@ void iscsit_determine_maxcmdsn(struct iscsi_session *sess)
* core_set_queue_depth_for_node(). * core_set_queue_depth_for_node().
*/ */
sess->cmdsn_window = se_nacl->queue_depth; 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) void iscsit_increment_maxcmdsn(struct iscsi_cmd *cmd, struct iscsi_session *sess)
{ {
u32 max_cmd_sn;
if (cmd->immediate_cmd || cmd->maxcmdsn_inc) if (cmd->immediate_cmd || cmd->maxcmdsn_inc)
return; return;
cmd->maxcmdsn_inc = 1; 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); EXPORT_SYMBOL(iscsit_increment_maxcmdsn);
...@@ -366,8 +366,6 @@ static int iscsi_target_do_tx_login_io(struct iscsi_conn *conn, struct iscsi_log ...@@ -366,8 +366,6 @@ static int iscsi_target_do_tx_login_io(struct iscsi_conn *conn, struct iscsi_log
return -1; return -1;
login->rsp_length = 0; 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; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment