diff options
| author | Bart Van Assche <[email protected]> | 2017-05-04 15:50:53 -0700 |
|---|---|---|
| committer | Nicholas Bellinger <[email protected]> | 2017-05-07 16:11:09 -0700 |
| commit | 55d694275f41a1c0eef4ef49044ff29bc3999490 (patch) | |
| tree | 1be6e0d0976a7c484852602bb15575a71f2e0ffe | |
| parent | 59ac9c078141b8fd0186c0b18660a1b2c24e724e (diff) | |
IB/srpt: Fix abort handling
Let the target core check the CMD_T_ABORTED flag instead of the SRP
target driver. Hence remove the transport_check_aborted_status()
call. Since state == SRPT_STATE_CMD_RSP_SENT is something that really
should not happen, do not try to recover if srpt_queue_response() is
called for an I/O context that is in that state. This patch is a bug
fix because the srpt_abort_cmd() call is misplaced - if that function
is called from srpt_queue_response() it should either be called
before the command state is changed or after the response has been
sent.
Signed-off-by: Bart Van Assche <[email protected]>
Reviewed-by: Hannes Reinecke <[email protected]>
Cc: Doug Ledford <[email protected]>
Cc: Christoph Hellwig <[email protected]>
Cc: Andy Grover <[email protected]>
Cc: David Disseldorp <[email protected]>
Signed-off-by: Nicholas Bellinger <[email protected]>
| -rw-r--r-- | drivers/infiniband/ulp/srpt/ib_srpt.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/drivers/infiniband/ulp/srpt/ib_srpt.c b/drivers/infiniband/ulp/srpt/ib_srpt.c index 7e314c2f2071..36d15da7a395 100644 --- a/drivers/infiniband/ulp/srpt/ib_srpt.c +++ b/drivers/infiniband/ulp/srpt/ib_srpt.c @@ -2302,12 +2302,8 @@ static void srpt_queue_response(struct se_cmd *cmd) } spin_unlock_irqrestore(&ioctx->spinlock, flags); - if (unlikely(transport_check_aborted_status(&ioctx->cmd, false) - || WARN_ON_ONCE(state == SRPT_STATE_CMD_RSP_SENT))) { - atomic_inc(&ch->req_lim_delta); - srpt_abort_cmd(ioctx); + if (unlikely(WARN_ON_ONCE(state == SRPT_STATE_CMD_RSP_SENT))) return; - } /* For read commands, transfer the data to the initiator. */ if (ioctx->cmd.data_direction == DMA_FROM_DEVICE && |