From 3f80a85fa600028709f617c254b901ecdbf02d1a Mon Sep 17 00:00:00 2001
From: David Disseldorp <ddiss@suse.de>
Date: Mon, 7 Sep 2015 13:08:54 +0200
Subject: [PATCH] target: remove hardcoded T10 Vendor ID in INQUIRY response
Patch-mainline: Not yet, SES2 clustered LIO/RBD
References: fate#318836
Use the value stored in t10_wwn.vendor, which defaults to "LIO-ORG", but
can be reconfigured via the vendor_id ConfigFS attribute.
Signed-off-by: David Disseldorp <ddiss@suse.de>
---
drivers/target/target_core_spc.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
--- a/drivers/target/target_core_spc.c
+++ b/drivers/target/target_core_spc.c
@@ -108,8 +108,14 @@ spc_emulate_inquiry_std(struct se_cmd *c
buf[7] = 0x2; /* CmdQue=1 */
- memcpy(&buf[8], "LIO-ORG ", 8);
- memset(&buf[16], 0x20, 16);
+ /*
+ * ASCII data fields described as being left-aligned shall have any
+ * unused bytes at the end of the field (i.e., highest offset) and the
+ * unused bytes shall be filled with ASCII space characters (20h).
+ */
+ memset(&buf[8], 0x20, 8 + 16 + 4);
+ memcpy(&buf[8], dev->t10_wwn.vendor,
+ min_t(size_t, strlen(dev->t10_wwn.vendor), 8));
memcpy(&buf[16], dev->t10_wwn.model,
min_t(size_t, strlen(dev->t10_wwn.model), 16));
memcpy(&buf[32], dev->t10_wwn.revision,
@@ -251,7 +257,10 @@ 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);
+ /* left align Vendor ID and pad with spaces */
+ memset(&buf[off+4], 0x20, 8);
+ memcpy(&buf[off+4], dev->t10_wwn.vendor,
+ min_t(size_t, strlen(dev->t10_wwn.vendor), 8));
/* Extra Byte for NULL Terminator */
id_len++;
/* Identifier Length */