target/pscsi: call spc_emulate_report_luns directly
authorChristoph Hellwig <hch@infradead.org>
Sun, 7 Oct 2012 14:55:52 +0000 (10:55 -0400)
committerNicholas Bellinger <nab@linux-iscsi.org>
Wed, 7 Nov 2012 04:55:44 +0000 (20:55 -0800)
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 <hch@lst.de>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
drivers/target/target_core_pscsi.c
drivers/target/target_core_spc.c
include/target/target_core_backend.h

index b2965084eb4fe84a3ed5c5cab0ebdec033ed5ffb..dc10e29934d7ec65373b442bda34e232e451b9b3 100644 (file)
@@ -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)
index 07b82700dcd80182ed1503590807c38688d7e0a0..1f1ddb8183c7f8dbee32f413b3dbb1c582410907 100644 (file)
@@ -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)
 {
index 1c43955f4cb57aa72e235773d3b06199dc1a4160..e7a03056c957696b8e18ffa515f9a1f2162abba8 100644 (file)
@@ -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 *);