diff options
| -rw-r--r-- | drivers/target/target_core_sbc.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/target/target_core_sbc.c b/drivers/target/target_core_sbc.c index 868f8aa04f13..a6e27d967c7b 100644 --- a/drivers/target/target_core_sbc.c +++ b/drivers/target/target_core_sbc.c | |||
| @@ -135,6 +135,12 @@ static int sbc_emulate_verify(struct se_cmd *cmd) | |||
| 135 | return 0; | 135 | return 0; |
| 136 | } | 136 | } |
| 137 | 137 | ||
| 138 | static int sbc_emulate_noop(struct se_cmd *cmd) | ||
| 139 | { | ||
| 140 | target_complete_cmd(cmd, GOOD); | ||
| 141 | return 0; | ||
| 142 | } | ||
| 143 | |||
| 138 | static inline u32 sbc_get_size(struct se_cmd *cmd, u32 sectors) | 144 | static inline u32 sbc_get_size(struct se_cmd *cmd, u32 sectors) |
| 139 | { | 145 | { |
| 140 | return cmd->se_dev->se_sub_dev->se_dev_attrib.block_size * sectors; | 146 | return cmd->se_dev->se_sub_dev->se_dev_attrib.block_size * sectors; |
| @@ -531,6 +537,18 @@ int sbc_parse_cdb(struct se_cmd *cmd, struct spc_ops *ops) | |||
| 531 | size = 0; | 537 | size = 0; |
| 532 | cmd->execute_cmd = sbc_emulate_verify; | 538 | cmd->execute_cmd = sbc_emulate_verify; |
| 533 | break; | 539 | break; |
| 540 | case REZERO_UNIT: | ||
| 541 | case SEEK_6: | ||
| 542 | case SEEK_10: | ||
| 543 | /* | ||
| 544 | * There are still clients out there which use these old SCSI-2 | ||
| 545 | * commands. This mainly happens when running VMs with legacy | ||
| 546 | * guest systems, connected via SCSI command pass-through to | ||
| 547 | * iSCSI targets. Make them happy and return status GOOD. | ||
| 548 | */ | ||
| 549 | size = 0; | ||
| 550 | cmd->execute_cmd = sbc_emulate_noop; | ||
| 551 | break; | ||
| 534 | default: | 552 | default: |
| 535 | ret = spc_parse_cdb(cmd, &size); | 553 | ret = spc_parse_cdb(cmd, &size); |
| 536 | if (ret) | 554 | if (ret) |
