target: Drop iSCSI use of mutex around max_cmd_sn increment
In a performance profile, taking a mutex in iscsit_increment_maxcmdsn() shows up very high. However taking a mutex around "sess->max_cmd_sn += 1" seems pretty silly: we're not serializing against other contexts in any useful way. I did a quick audit and there don't appear to be any other places that use max_cmd_sn within the mutex more than once, so this lock can't be providing any useful serialization. (Get correct values for logging - fix whitespace damage) Signed-off-by: Roland Dreier <roland@purestorage.com> Signed-off-by: Spencer Baugh <sbaugh@catern.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
这个提交包含在:
@@ -340,7 +340,6 @@ static int iscsi_target_check_first_request(
|
||||
static int iscsi_target_do_tx_login_io(struct iscsi_conn *conn, struct iscsi_login *login)
|
||||
{
|
||||
u32 padding = 0;
|
||||
struct iscsi_session *sess = conn->sess;
|
||||
struct iscsi_login_rsp *login_rsp;
|
||||
|
||||
login_rsp = (struct iscsi_login_rsp *) login->rsp;
|
||||
@@ -352,7 +351,7 @@ static int iscsi_target_do_tx_login_io(struct iscsi_conn *conn, struct iscsi_log
|
||||
login_rsp->itt = login->init_task_tag;
|
||||
login_rsp->statsn = cpu_to_be32(conn->stat_sn++);
|
||||
login_rsp->exp_cmdsn = cpu_to_be32(conn->sess->exp_cmd_sn);
|
||||
login_rsp->max_cmdsn = cpu_to_be32(conn->sess->max_cmd_sn);
|
||||
login_rsp->max_cmdsn = cpu_to_be32((u32) atomic_read(&conn->sess->max_cmd_sn));
|
||||
|
||||
pr_debug("Sending Login Response, Flags: 0x%02x, ITT: 0x%08x,"
|
||||
" ExpCmdSN; 0x%08x, MaxCmdSN: 0x%08x, StatSN: 0x%08x, Length:"
|
||||
@@ -367,10 +366,8 @@ static int iscsi_target_do_tx_login_io(struct iscsi_conn *conn, struct iscsi_log
|
||||
return -1;
|
||||
|
||||
login->rsp_length = 0;
|
||||
mutex_lock(&sess->cmdsn_mutex);
|
||||
login_rsp->exp_cmdsn = cpu_to_be32(sess->exp_cmd_sn);
|
||||
login_rsp->max_cmdsn = cpu_to_be32(sess->max_cmd_sn);
|
||||
mutex_unlock(&sess->cmdsn_mutex);
|
||||
login_rsp->exp_cmdsn = cpu_to_be32(login_rsp->exp_cmdsn);
|
||||
login_rsp->max_cmdsn = cpu_to_be32(login_rsp->max_cmdsn);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
在新工单中引用
屏蔽一个用户