From: Christoph Hellwig Date: Sun, 7 Oct 2012 14:55:52 +0000 (-0400) Subject: target/pscsi: call spc_emulate_report_luns directly X-Git-Tag: next-20121108~71^2~21 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=8de530a523fd3cc46b5d8d96f3016298c5c808ac;p=karo-tx-linux.git target/pscsi: call spc_emulate_report_luns directly No need to indirect through spc_parse_cdb if we only ever call it for REPORT LUNS emulation. (nab: Add missing EXPORT_SYMBOL for spc_emulate_report_luns) Signed-off-by: Christoph Hellwig Signed-off-by: Nicholas Bellinger --- diff --git a/drivers/target/target_core_pscsi.c b/drivers/target/target_core_pscsi.c index b2965084eb4f..dc10e29934d7 100644 --- a/drivers/target/target_core_pscsi.c +++ b/drivers/target/target_core_pscsi.c @@ -985,8 +985,6 @@ static inline void pscsi_clear_cdb_lun(unsigned char *cdb) static int pscsi_parse_cdb(struct se_cmd *cmd) { unsigned char *cdb = cmd->t_task_cdb; - unsigned int dummy_size; - int ret; if (cmd->se_cmd_flags & SCF_BIDI) { cmd->se_cmd_flags |= SCF_SCSI_CDB_EXCEPTION; @@ -1003,10 +1001,7 @@ static int pscsi_parse_cdb(struct se_cmd *cmd) */ switch (cdb[0]) { case REPORT_LUNS: - ret = spc_parse_cdb(cmd, &dummy_size); - if (ret) - return ret; - break; + return spc_emulate_report_luns(cmd); case READ_6: case READ_10: case READ_12: @@ -1020,10 +1015,8 @@ static int pscsi_parse_cdb(struct se_cmd *cmd) /* FALLTHROUGH*/ default: cmd->execute_cmd = pscsi_execute_cmd; - break; + return 0; } - - return 0; } static int pscsi_execute_cmd(struct se_cmd *cmd) diff --git a/drivers/target/target_core_spc.c b/drivers/target/target_core_spc.c index 07b82700dcd8..1f1ddb8183c7 100644 --- a/drivers/target/target_core_spc.c +++ b/drivers/target/target_core_spc.c @@ -908,7 +908,7 @@ static int spc_emulate_request_sense(struct se_cmd *cmd) return 0; } -static int spc_emulate_report_luns(struct se_cmd *cmd) +int spc_emulate_report_luns(struct se_cmd *cmd) { struct se_dev_entry *deve; struct se_session *sess = cmd->se_sess; @@ -970,6 +970,7 @@ done: target_complete_cmd(cmd, GOOD); return 0; } +EXPORT_SYMBOL(spc_emulate_report_luns); static int spc_emulate_testunitready(struct se_cmd *cmd) { diff --git a/include/target/target_core_backend.h b/include/target/target_core_backend.h index 1c43955f4cb5..e7a03056c957 100644 --- a/include/target/target_core_backend.h +++ b/include/target/target_core_backend.h @@ -52,6 +52,7 @@ void target_complete_cmd(struct se_cmd *, u8); int sbc_parse_cdb(struct se_cmd *cmd, struct sbc_ops *ops); int spc_parse_cdb(struct se_cmd *cmd, unsigned int *size); +int spc_emulate_report_luns(struct se_cmd *cmd); int spc_get_write_same_sectors(struct se_cmd *cmd); void transport_set_vpd_proto_id(struct t10_vpd *, unsigned char *);