Blob Blame History Raw
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Thu, 25 Mar 2021 13:05:10 -0500
Subject: [PATCH] RH: make parse_vpd_pg83 match scsi_id output

Red Hat sets ID_SERIAL based on the result of scsi_id, instead of using
the result of sg_inq and 55-scsi-sg3_id.rules. Make parse_vpd_pg83 match
that.

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
 libmultipath/discovery.c | 18 ++----------------
 tests/vpd.c              |  6 ++++++
 2 files changed, 8 insertions(+), 16 deletions(-)

diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c
index f25fe9e3..6fb81c28 100644
--- a/libmultipath/discovery.c
+++ b/libmultipath/discovery.c
@@ -1136,12 +1136,9 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len,
 				naa_prio = 7;
 				break;
 			case 2:
-				/* IEEE Extended: Prio 6 */
-				naa_prio = 6;
-				break;
 			case 3:
-				/* IEEE Locally assigned: Prio 1 */
-				naa_prio = 1;
+				/* IEEE Extended or Locally assigned: Prio 6 */
+				naa_prio = 6;
 				break;
 			default:
 				/* Default: no priority */
@@ -1160,17 +1157,6 @@ parse_vpd_pg83(const unsigned char *in, size_t in_len,
 				vpd = d;
 			}
 			break;
-		case 0x8:
-			/* SCSI Name: Prio 3 */
-			if (memcmp(d + 4, "eui.", 4) &&
-			    memcmp(d + 4, "naa.", 4) &&
-			    memcmp(d + 4, "iqn.", 4))
-				break;
-			if (prio < 3) {
-				prio = 3;
-				vpd = d;
-			}
-			break;
 		case 0x1:
 			/* T-10 Vendor ID: Prio 2 */
 			if (prio < 2) {
diff --git a/tests/vpd.c b/tests/vpd.c
index 8e730d37..7bf7990f 100644
--- a/tests/vpd.c
+++ b/tests/vpd.c
@@ -230,11 +230,13 @@ static const char * const str_prefix[] = {
 	[STR_IQN] = "iqn.",
 };
 
+#if 0
 static const char byte0[] = {
 	[STR_EUI] = '2',
 	[STR_NAA] = '3',
 	[STR_IQN] = '8',
 };
+#endif
 
 /**
  * create_scsi_string_desc() - create a SCSI name string descriptor.
@@ -659,6 +661,7 @@ make_test_vpd_naa(2, 18);
 make_test_vpd_naa(2, 17);
 make_test_vpd_naa(2, 16);
 
+#if 0
 /* SCSI Name string: EUI64, WWID size: 17 */
 make_test_vpd_str(0, 20, 18)
 make_test_vpd_str(0, 20, 17)
@@ -694,6 +697,7 @@ make_test_vpd_str(18, 20, 18)
 make_test_vpd_str(18, 20, 17)
 make_test_vpd_str(18, 20, 16)
 make_test_vpd_str(18, 20, 15)
+#endif
 
 static int test_vpd(void)
 {
@@ -767,6 +771,7 @@ static int test_vpd(void)
 		cmocka_unit_test(test_vpd_naa_2_18),
 		cmocka_unit_test(test_vpd_naa_2_17),
 		cmocka_unit_test(test_vpd_naa_2_16),
+/*
 		cmocka_unit_test(test_vpd_str_0_20_18),
 		cmocka_unit_test(test_vpd_str_0_20_17),
 		cmocka_unit_test(test_vpd_str_0_20_16),
@@ -791,6 +796,7 @@ static int test_vpd(void)
 		cmocka_unit_test(test_vpd_str_18_20_17),
 		cmocka_unit_test(test_vpd_str_18_20_16),
 		cmocka_unit_test(test_vpd_str_18_20_15),
+*/
 	};
 	return cmocka_run_group_tests(tests, setup, teardown);
 }