diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-11-30 19:55:51 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-11-30 19:55:51 -0500 |
commit | b45b161d3242009c0202abe678511d9cbdc6fe97 (patch) | |
tree | 96a370f6a5a416503b9f969e0732c2a8cfe629ae /drivers | |
parent | cc19528bd3084c3c2d870b31a3578da8c69952f3 (diff) | |
parent | 3ea160b3e8f0de8161861995d9901f61192fc0b0 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending
Pull target fix from Nicholas Bellinger:
"So just a single target fix for v3.7.0 this time around from Roland to
address a aborted command bug w/ tcm_qla2xxx fabric ports.
Also, there is one outstanding IBLOCK + virtio-blk bug that is still
being tracked down effecting v3.6.x, but AFAICT thus far this appears
to be a bug outside of target code."
* git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending:
target: Fix handling of aborted commands
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/target/target_core_transport.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index 9097155e9ebe..dcecbfb17243 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c | |||
@@ -1819,8 +1819,10 @@ void target_execute_cmd(struct se_cmd *cmd) | |||
1819 | /* | 1819 | /* |
1820 | * If the received CDB has aleady been aborted stop processing it here. | 1820 | * If the received CDB has aleady been aborted stop processing it here. |
1821 | */ | 1821 | */ |
1822 | if (transport_check_aborted_status(cmd, 1)) | 1822 | if (transport_check_aborted_status(cmd, 1)) { |
1823 | complete(&cmd->t_transport_stop_comp); | ||
1823 | return; | 1824 | return; |
1825 | } | ||
1824 | 1826 | ||
1825 | /* | 1827 | /* |
1826 | * Determine if IOCTL context caller in requesting the stopping of this | 1828 | * Determine if IOCTL context caller in requesting the stopping of this |
@@ -3067,7 +3069,7 @@ void transport_send_task_abort(struct se_cmd *cmd) | |||
3067 | unsigned long flags; | 3069 | unsigned long flags; |
3068 | 3070 | ||
3069 | spin_lock_irqsave(&cmd->t_state_lock, flags); | 3071 | spin_lock_irqsave(&cmd->t_state_lock, flags); |
3070 | if (cmd->se_cmd_flags & SCF_SENT_CHECK_CONDITION) { | 3072 | if (cmd->se_cmd_flags & (SCF_SENT_CHECK_CONDITION | SCF_SENT_DELAYED_TAS)) { |
3071 | spin_unlock_irqrestore(&cmd->t_state_lock, flags); | 3073 | spin_unlock_irqrestore(&cmd->t_state_lock, flags); |
3072 | return; | 3074 | return; |
3073 | } | 3075 | } |