projects
/
firefly-linux-kernel-4.4.55.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
PM / devfreq: rk3399_dmc: rename of_get_opp_table
[firefly-linux-kernel-4.4.55.git]
/
drivers
/
target
/
target_core_sbc.c
diff --git
a/drivers/target/target_core_sbc.c
b/drivers/target/target_core_sbc.c
index c220bb8dfa9d5387b6f7609c56f81727677d4ced..2e27b1034ede7f2aa40f47282e6c4acec363c638 100644
(file)
--- a/
drivers/target/target_core_sbc.c
+++ b/
drivers/target/target_core_sbc.c
@@
-442,6
+442,7
@@
static sense_reason_t compare_and_write_post(struct se_cmd *cmd, bool success,
int *post_ret)
{
struct se_device *dev = cmd->se_dev;
int *post_ret)
{
struct se_device *dev = cmd->se_dev;
+ sense_reason_t ret = TCM_NO_SENSE;
/*
* Only set SCF_COMPARE_AND_WRITE_POST to force a response fall-through
/*
* Only set SCF_COMPARE_AND_WRITE_POST to force a response fall-through
@@
-449,9
+450,12
@@
static sense_reason_t compare_and_write_post(struct se_cmd *cmd, bool success,
* sent to the backend driver.
*/
spin_lock_irq(&cmd->t_state_lock);
* sent to the backend driver.
*/
spin_lock_irq(&cmd->t_state_lock);
- if (
(cmd->transport_state & CMD_T_SENT) && !cmd->scsi_status
) {
+ if (
cmd->transport_state & CMD_T_SENT
) {
cmd->se_cmd_flags |= SCF_COMPARE_AND_WRITE_POST;
*post_ret = 1;
cmd->se_cmd_flags |= SCF_COMPARE_AND_WRITE_POST;
*post_ret = 1;
+
+ if (cmd->scsi_status == SAM_STAT_CHECK_CONDITION)
+ ret = TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
}
spin_unlock_irq(&cmd->t_state_lock);
}
spin_unlock_irq(&cmd->t_state_lock);
@@
-461,7
+465,7
@@
static sense_reason_t compare_and_write_post(struct se_cmd *cmd, bool success,
*/
up(&dev->caw_sem);
*/
up(&dev->caw_sem);
- return
TCM_NO_SENSE
;
+ return
ret
;
}
static sense_reason_t compare_and_write_callback(struct se_cmd *cmd, bool success,
}
static sense_reason_t compare_and_write_callback(struct se_cmd *cmd, bool success,