[stgt] spc: Support NAA IEEE Registered Extended field in VPD page 0x83
Or Gerlitz
ogerlitz at mellanox.com
Tue Feb 25 13:54:13 CET 2014
From: Dennis Cullison <Dennis.Cullison at Teradata.com>
Enables support for the NAA IEEE Registered Extended field in the
inquiry VPD page 0x83. This field is used by multi-pathing
software for device persistency.
Signed-off-by: Dennis Cullison <Dennis.Cullison at Teradata.com>
Signed-off-by: Or Gerlitz <ogerlitz at mellanox.com>
---
Hi Tomo,
This fix is from Dennis Cullison who asked me to assist in submission
Or.
usr/spc.c | 26 +++++++++++++++++++++++++-
1 files changed, 25 insertions(+), 1 deletions(-)
diff --git a/usr/spc.c b/usr/spc.c
index 29f39a9..0dd590f 100644
--- a/usr/spc.c
+++ b/usr/spc.c
@@ -145,6 +145,12 @@ static void update_vpd_83(struct scsi_lu *lu, void *id)
struct vpd *vpd_pg = lu->attrs.lu_vpd[PCODE_OFFSET(0x83)];
uint8_t *data = vpd_pg->data;
+ char *id_str = id;
+ char subs[] = "0";
+ unsigned long a = 0;
+ unsigned long b = 0;
+ unsigned long c;
+
data[0] = INQ_CODE_ASCII;
data[1] = DESG_T10;
data[3] = SCSI_ID_LEN;
@@ -160,6 +166,24 @@ static void update_vpd_83(struct scsi_lu *lu, void *id)
put_unaligned_be64(lu->attrs.numeric_id, data);
data[0] |= NAA_LOCAL << 4;
+
+ data += NAA_DESG_LEN;
+ data[0] = INQ_CODE_BIN;
+ data[1] = DESG_NAA;
+ data[3] = NAA_DESG_LEN_EXTD;
+ data += DESG_HDR_LEN;
+ while (*id_str) {
+ subs[0] = *id_str++;
+ c = a >> 60;
+ a <<= 4;
+ b <<= 4;
+ b |= c;
+ a |= strtoul(subs, NULL, 16);
+ }
+ put_unaligned_be64(b, data);
+ put_unaligned_be64(a, data + 8);
+ data[0] &= 0x0F;
+ data[0] |= NAA_IEEE_REGD_EXTD << 4;
}
static void update_vpd_b2(struct scsi_lu *lu, void *id)
@@ -2060,7 +2084,7 @@ int spc_lu_init(struct scsi_lu *lu)
/* VPD page 0x83 */
pg = PCODE_OFFSET(0x83);
- lu_vpd[pg] = alloc_vpd(2*DESG_HDR_LEN + NAA_DESG_LEN + SCSI_ID_LEN);
+ lu_vpd[pg] = alloc_vpd(3*DESG_HDR_LEN + NAA_DESG_LEN + SCSI_ID_LEN + NAA_DESG_LEN_EXTD);
if (!lu_vpd[pg])
return -ENOMEM;
lu_vpd[pg]->vpd_update = update_vpd_83;
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
More information about the stgt
mailing list