diff options
| -rw-r--r-- | drivers/target/target_core_transport.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index d02218c71dd6..0e89db84b200 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c | |||
| @@ -2560,7 +2560,20 @@ EXPORT_SYMBOL(transport_generic_new_cmd); | |||
| 2560 | 2560 | ||
| 2561 | static void transport_write_pending_qf(struct se_cmd *cmd) | 2561 | static void transport_write_pending_qf(struct se_cmd *cmd) |
| 2562 | { | 2562 | { |
| 2563 | unsigned long flags; | ||
| 2563 | int ret; | 2564 | int ret; |
| 2565 | bool stop; | ||
| 2566 | |||
| 2567 | spin_lock_irqsave(&cmd->t_state_lock, flags); | ||
| 2568 | stop = (cmd->transport_state & (CMD_T_STOP | CMD_T_ABORTED)); | ||
| 2569 | spin_unlock_irqrestore(&cmd->t_state_lock, flags); | ||
| 2570 | |||
| 2571 | if (stop) { | ||
| 2572 | pr_debug("%s:%d CMD_T_STOP|CMD_T_ABORTED for ITT: 0x%08llx\n", | ||
| 2573 | __func__, __LINE__, cmd->tag); | ||
| 2574 | complete_all(&cmd->t_transport_stop_comp); | ||
| 2575 | return; | ||
| 2576 | } | ||
| 2564 | 2577 | ||
| 2565 | ret = cmd->se_tfo->write_pending(cmd); | 2578 | ret = cmd->se_tfo->write_pending(cmd); |
| 2566 | if (ret) { | 2579 | if (ret) { |
