diff options
author | Nicholas Bellinger <nab@linux-iscsi.org> | 2011-08-08 22:03:38 -0400 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2011-08-22 15:26:20 -0400 |
commit | 16ab8e60a0ebc22cfbe61d84e620457a15f3a0bc (patch) | |
tree | a6ccaf22e12140045f70678d6dd213154cd11087 /drivers/target/target_core_transport.c | |
parent | 387e96c05299ca7a0ade874f343f91f0b01086a0 (diff) |
target: Fix write payload exception handling with ->new_cmd_map
This patch fixes a bug for fabrics using tfo->new_cmd_map() that
are expect transport_generic_request_failure() to be calling
transport_send_check_condition_and_sense() for both READ and WRITE,
instead of only for READ exceptions.
This was originally observed with a failed WRITE_SAME_16 w/ unmap=0
using tcm_loop.
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target/target_core_transport.c')
-rw-r--r-- | drivers/target/target_core_transport.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index cc5a339d4d5..fd7d4518b8e 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c | |||
@@ -2053,8 +2053,14 @@ static void transport_generic_request_failure( | |||
2053 | cmd->scsi_sense_reason = TCM_UNSUPPORTED_SCSI_OPCODE; | 2053 | cmd->scsi_sense_reason = TCM_UNSUPPORTED_SCSI_OPCODE; |
2054 | break; | 2054 | break; |
2055 | } | 2055 | } |
2056 | 2056 | /* | |
2057 | if (!sc) | 2057 | * If a fabric does not define a cmd->se_tfo->new_cmd_map caller, |
2058 | * make the call to transport_send_check_condition_and_sense() | ||
2059 | * directly. Otherwise expect the fabric to make the call to | ||
2060 | * transport_send_check_condition_and_sense() after handling | ||
2061 | * possible unsoliticied write data payloads. | ||
2062 | */ | ||
2063 | if (!sc && !cmd->se_tfo->new_cmd_map) | ||
2058 | transport_new_cmd_failure(cmd); | 2064 | transport_new_cmd_failure(cmd); |
2059 | else { | 2065 | else { |
2060 | ret = transport_send_check_condition_and_sense(cmd, | 2066 | ret = transport_send_check_condition_and_sense(cmd, |