diff options
author | Andy Grover <agrover@redhat.com> | 2012-04-03 15:51:08 -0700 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2012-04-14 17:40:34 -0700 |
commit | 4580cf38483790a4304a15328303566a054d4ea5 (patch) | |
tree | e0f237256ec32ba4c9e98ecdbd36e4e752a7cbac /drivers/target/iscsi/iscsi_target.c | |
parent | c6037cc546ca10cbdc5b60f0598b4ddcb181fe5d (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.c | 12 |
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; } } |