]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
target: add inquiry_vendor module param to override LIO-ORG
authorKyle Fortin <kyle.fortin@oracle.com>
Tue, 13 Mar 2018 17:44:33 +0000 (13:44 -0400)
committerJack Vogel <jack.vogel@oracle.com>
Thu, 22 Mar 2018 23:17:58 +0000 (16:17 -0700)
Orabug: 27679431

OL6 iscsi target used IET which presented IET for the inquiry vendor.
OL7 uses LIO iscsi target instead, which presents 'LIO-ORG'.

Exadata targets upgrading from OL6 to OL7 need to present the same
vendor ID to existing iscsi initiator multipath mappings.

Add target_core_mod parameter inquiry_vendor for target inquiry vendor
string override.  It defaults to original "LIO-ORG " if not set.

(cherry picked from commit 87e9da042f42aa5bef1a76c4ef84989680e1df2e)
Signed-off-by: Kyle Fortin <kyle.fortin@oracle.com>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/target/target_core_device.c
drivers/target/target_core_internal.h
drivers/target/target_core_spc.c

index 6afcd7bdef708a0ad4f02e31fadddf014e5ab89e..44382647668cf8e7a099eca802c3d1d7c339aaf0 100644 (file)
@@ -24,6 +24,8 @@
  *
  ******************************************************************************/
 
+#include <linux/module.h>
+#include <linux/moduleparam.h>
 #include <linux/net.h>
 #include <linux/string.h>
 #include <linux/delay.h>
@@ -55,6 +57,12 @@ static struct se_hba *lun0_hba;
 /* not static, needed by tpg.c */
 struct se_device *g_lun0_dev;
 
+/* SCSI inquiry vendor string is 8 chars space padded + NULL. */
+char g_inquiry_vendor[9] = "LIO-ORG ";
+module_param_string(inquiry_vendor, g_inquiry_vendor,
+               sizeof(g_inquiry_vendor), S_IRUGO|S_IWUSR);
+MODULE_PARM_DESC(inquiry_vendor, "inquiry vendor string override");
+
 sense_reason_t
 transport_lookup_cmd_lun(struct se_cmd *se_cmd, u32 unpacked_lun)
 {
@@ -1605,7 +1613,7 @@ int target_configure_device(struct se_device *dev)
         * passthrough because this is being provided by the backend LLD.
         */
        if (!(dev->transport->transport_flags & TRANSPORT_FLAG_PASSTHROUGH)) {
-               strncpy(&dev->t10_wwn.vendor[0], "LIO-ORG", 8);
+               strncpy(&dev->t10_wwn.vendor[0], g_inquiry_vendor, 8);
                strncpy(&dev->t10_wwn.model[0],
                        dev->transport->inquiry_prod, 16);
                strncpy(&dev->t10_wwn.revision[0],
index e775359ebfb6cad1701311fee5a77633d581a547..9e19d9099df5010a57b13d90c525cde0a1ffa26b 100644 (file)
@@ -20,6 +20,7 @@ extern struct t10_alua_lu_gp *default_lu_gp;
 /* target_core_device.c */
 extern struct mutex g_device_mutex;
 extern struct list_head g_device_list;
+extern char g_inquiry_vendor[];
 
 struct se_dev_entry *core_get_se_deve_from_rtpi(struct se_node_acl *, u16);
 int    core_free_device_list_for_node(struct se_node_acl *,
index 7912aa1243857a8968dcff5fa0f643b8e249dd6e..d75bdd9dbe2a5680c16a7a1fdb5d507856ebceaa 100644 (file)
@@ -114,7 +114,7 @@ spc_emulate_inquiry_std(struct se_cmd *cmd, unsigned char *buf)
 
        buf[7] = 0x2; /* CmdQue=1 */
 
-       memcpy(&buf[8], "LIO-ORG ", 8);
+       memcpy(&buf[8], g_inquiry_vendor, 8);
        memset(&buf[16], 0x20, 16);
        memcpy(&buf[16], dev->t10_wwn.model,
               min_t(size_t, strlen(dev->t10_wwn.model), 16));
@@ -259,7 +259,7 @@ check_t10_vend_desc:
        buf[off] = 0x2; /* ASCII */
        buf[off+1] = 0x1; /* T10 Vendor ID */
        buf[off+2] = 0x0;
-       memcpy(&buf[off+4], "LIO-ORG", 8);
+       memcpy(&buf[off+4], g_inquiry_vendor, 8);
        /* Extra Byte for NULL Terminator */
        id_len++;
        /* Identifier Length */