Commit 67236c44741e250199ccd77f1115568e68cf8848
Committed by
Nicholas Bellinger
1 parent
9f9ef6d3c0
Exists in
smarc-l5.0.0_1.0.0-ga
and in
5 other branches
target: Fix unsupported WRITE_SAME sense payload
This patch fixes a bug in target-core where unsupported WRITE_SAME ops from a target_check_write_same_discard() failure was incorrectly returning CHECK_CONDITION w/ TCM_INVALID_CDB_FIELD sense data. This was causing some clients to not properly fall back, so go ahead and use the correct TCM_UNSUPPORTED_SCSI_OPCODE sense for this case. Reported-by: Martin Svec <martin.svec@zoner.cz> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Showing 1 changed file with 3 additions and 3 deletions Side-by-side Diff
drivers/target/target_core_transport.c
... | ... | @@ -2697,7 +2697,7 @@ |
2697 | 2697 | cmd->se_cmd_flags |= SCF_SCSI_CONTROL_SG_IO_CDB; |
2698 | 2698 | |
2699 | 2699 | if (target_check_write_same_discard(&cdb[10], dev) < 0) |
2700 | - goto out_invalid_cdb_field; | |
2700 | + goto out_unsupported_cdb; | |
2701 | 2701 | if (!passthrough) |
2702 | 2702 | cmd->execute_task = target_emulate_write_same; |
2703 | 2703 | break; |
... | ... | @@ -2980,7 +2980,7 @@ |
2980 | 2980 | cmd->se_cmd_flags |= SCF_SCSI_CONTROL_SG_IO_CDB; |
2981 | 2981 | |
2982 | 2982 | if (target_check_write_same_discard(&cdb[1], dev) < 0) |
2983 | - goto out_invalid_cdb_field; | |
2983 | + goto out_unsupported_cdb; | |
2984 | 2984 | if (!passthrough) |
2985 | 2985 | cmd->execute_task = target_emulate_write_same; |
2986 | 2986 | break; |
... | ... | @@ -3003,7 +3003,7 @@ |
3003 | 3003 | * of byte 1 bit 3 UNMAP instead of original reserved field |
3004 | 3004 | */ |
3005 | 3005 | if (target_check_write_same_discard(&cdb[1], dev) < 0) |
3006 | - goto out_invalid_cdb_field; | |
3006 | + goto out_unsupported_cdb; | |
3007 | 3007 | if (!passthrough) |
3008 | 3008 | cmd->execute_task = target_emulate_write_same; |
3009 | 3009 | break; |