summaryrefslogtreecommitdiff
path: root/drivers/target/iscsi/iscsi_target.c
diff options
context:
space:
mode:
authorAndy Grover <agrover@redhat.com>2012-04-03 15:51:08 -0700
committerNicholas Bellinger <nab@linux-iscsi.org>2012-04-14 17:40:34 -0700
commit4580cf38483790a4304a15328303566a054d4ea5 (patch)
treee0f237256ec32ba4c9e98ecdbd36e4e752a7cbac /drivers/target/iscsi/iscsi_target.c
parentc6037cc546ca10cbdc5b60f0598b4ddcb181fe5d (diff)
target/iscsi: Remove unneeded locking from iscsi_target_tx_thread
When processing immediate queue, we're switching on a local variable so it's not necessary to lock around it. However, we are modifying cmd->i_state in two spots, so lock around those parts only. Signed-off-by: Andy Grover <agrover@redhat.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target/iscsi/iscsi_target.c')
-rw-r--r--drivers/target/iscsi/iscsi_target.c12
1 files changed, 2 insertions, 10 deletions
diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
index e77b045c9b78..8428fa51beed 100644
--- a/drivers/target/iscsi/iscsi_target.c
+++ b/drivers/target/iscsi/iscsi_target.c
@@ -3516,15 +3516,11 @@ restart:
state = qr->state;
kmem_cache_free(lio_qr_cache, qr);
- spin_lock_bh(&cmd->istate_lock);
switch (state) {
case ISTATE_SEND_R2T:
- spin_unlock_bh(&cmd->istate_lock);
ret = iscsit_send_r2t(cmd, conn);
break;
case ISTATE_REMOVE:
- spin_unlock_bh(&cmd->istate_lock);
-
if (cmd->data_direction == DMA_TO_DEVICE)
iscsit_stop_dataout_timer(cmd);
@@ -3535,13 +3531,11 @@ restart:
iscsit_free_cmd(cmd);
continue;
case ISTATE_SEND_NOPIN_WANT_RESPONSE:
- spin_unlock_bh(&cmd->istate_lock);
iscsit_mod_nopin_response_timer(conn);
ret = iscsit_send_unsolicited_nopin(cmd,
conn, 1);
break;
case ISTATE_SEND_NOPIN_NO_RESPONSE:
- spin_unlock_bh(&cmd->istate_lock);
ret = iscsit_send_unsolicited_nopin(cmd,
conn, 0);
break;
@@ -3550,7 +3544,6 @@ restart:
" 0x%08x, i_state: %d on CID: %hu\n",
cmd->iscsi_opcode, cmd->init_task_tag, state,
conn->cid);
- spin_unlock_bh(&cmd->istate_lock);
goto transport_err;
}
if (ret < 0)
@@ -3561,19 +3554,19 @@ restart:
goto transport_err;
}
- spin_lock_bh(&cmd->istate_lock);
switch (state) {
case ISTATE_SEND_R2T:
- spin_unlock_bh(&cmd->istate_lock);
spin_lock_bh(&cmd->dataout_timeout_lock);
iscsit_start_dataout_timer(cmd, conn);
spin_unlock_bh(&cmd->dataout_timeout_lock);
break;
case ISTATE_SEND_NOPIN_WANT_RESPONSE:
+ spin_lock_bh(&cmd->istate_lock);
cmd->i_state = ISTATE_SENT_NOPIN_WANT_RESPONSE;
spin_unlock_bh(&cmd->istate_lock);
break;
case ISTATE_SEND_NOPIN_NO_RESPONSE:
+ spin_lock_bh(&cmd->istate_lock);
cmd->i_state = ISTATE_SENT_STATUS;
spin_unlock_bh(&cmd->istate_lock);
break;
@@ -3582,7 +3575,6 @@ restart:
" 0x%08x, i_state: %d on CID: %hu\n",
cmd->iscsi_opcode, cmd->init_task_tag,
state, conn->cid);
- spin_unlock_bh(&cmd->istate_lock);
goto transport_err;
}
}