Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

scsi_debug: use locally assigned naa

For reported SAS addresses replace fake IEEE registered NAAs (5) with
locally assigned NAAs (3).

Signed-off-by: Douglas Gilbert <dgilbert@interlog.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>

authored by

Douglas Gilbert and committed by
Martin K. Petersen
1b37bd60 09ba24c1

+18 -17
+18 -17
drivers/scsi/scsi_debug.c
··· 925 925 static const char * inq_vendor_id = "Linux "; 926 926 static const char * inq_product_id = "scsi_debug "; 927 927 static const char *inq_product_rev = "0186"; /* version less '.' */ 928 - static const u64 naa5_comp_a = 0x5222222000000000ULL; 929 - static const u64 naa5_comp_b = 0x5333333000000000ULL; 930 - static const u64 naa5_comp_c = 0x5111111000000000ULL; 928 + /* Use some locally assigned NAAs for SAS addresses. */ 929 + static const u64 naa3_comp_a = 0x3222222000000000ULL; 930 + static const u64 naa3_comp_b = 0x3333333000000000ULL; 931 + static const u64 naa3_comp_c = 0x3111111000000000ULL; 931 932 932 933 /* Device identification VPD page. Returns number of bytes placed in arr */ 933 934 static int inquiry_vpd_83(unsigned char *arr, int port_group_id, ··· 962 961 memcpy(arr + num, lu_name, 16); 963 962 num += 16; 964 963 } else { 965 - /* NAA-5, Logical unit identifier (binary) */ 964 + /* NAA-3, Logical unit identifier (binary) */ 966 965 arr[num++] = 0x1; /* binary (not necessarily sas) */ 967 966 arr[num++] = 0x3; /* PIV=0, lu, naa */ 968 967 arr[num++] = 0x0; 969 968 arr[num++] = 0x8; 970 - put_unaligned_be64(naa5_comp_b + dev_id_num, arr + num); 969 + put_unaligned_be64(naa3_comp_b + dev_id_num, arr + num); 971 970 num += 8; 972 971 } 973 972 /* Target relative port number */ ··· 980 979 arr[num++] = 0x0; 981 980 arr[num++] = 0x1; /* relative port A */ 982 981 } 983 - /* NAA-5, Target port identifier */ 982 + /* NAA-3, Target port identifier */ 984 983 arr[num++] = 0x61; /* proto=sas, binary */ 985 984 arr[num++] = 0x93; /* piv=1, target port, naa */ 986 985 arr[num++] = 0x0; 987 986 arr[num++] = 0x8; 988 - put_unaligned_be64(naa5_comp_a + port_a, arr + num); 987 + put_unaligned_be64(naa3_comp_a + port_a, arr + num); 989 988 num += 8; 990 - /* NAA-5, Target port group identifier */ 989 + /* NAA-3, Target port group identifier */ 991 990 arr[num++] = 0x61; /* proto=sas, binary */ 992 991 arr[num++] = 0x95; /* piv=1, target port group id */ 993 992 arr[num++] = 0x0; ··· 996 995 arr[num++] = 0; 997 996 put_unaligned_be16(port_group_id, arr + num); 998 997 num += 2; 999 - /* NAA-5, Target device identifier */ 998 + /* NAA-3, Target device identifier */ 1000 999 arr[num++] = 0x61; /* proto=sas, binary */ 1001 1000 arr[num++] = 0xa3; /* piv=1, target device, naa */ 1002 1001 arr[num++] = 0x0; 1003 1002 arr[num++] = 0x8; 1004 - put_unaligned_be64(naa5_comp_a + target_dev_id, arr + num); 1003 + put_unaligned_be64(naa3_comp_a + target_dev_id, arr + num); 1005 1004 num += 8; 1006 1005 /* SCSI name string: Target device identifier */ 1007 1006 arr[num++] = 0x63; /* proto=sas, UTF-8 */ 1008 1007 arr[num++] = 0xa8; /* piv=1, target device, SCSI name string */ 1009 1008 arr[num++] = 0x0; 1010 1009 arr[num++] = 24; 1011 - memcpy(arr + num, "naa.52222220", 12); 1010 + memcpy(arr + num, "naa.32222220", 12); 1012 1011 num += 12; 1013 1012 snprintf(b, sizeof(b), "%08X", target_dev_id); 1014 1013 memcpy(arr + num, b, 8); ··· 1087 1086 arr[num++] = 0x93; /* PIV=1, target port, NAA */ 1088 1087 arr[num++] = 0x0; /* reserved */ 1089 1088 arr[num++] = 0x8; /* length */ 1090 - put_unaligned_be64(naa5_comp_a + port_a, arr + num); 1089 + put_unaligned_be64(naa3_comp_a + port_a, arr + num); 1091 1090 num += 8; 1092 1091 arr[num++] = 0x0; /* reserved */ 1093 1092 arr[num++] = 0x0; /* reserved */ ··· 1102 1101 arr[num++] = 0x93; /* PIV=1, target port, NAA */ 1103 1102 arr[num++] = 0x0; /* reserved */ 1104 1103 arr[num++] = 0x8; /* length */ 1105 - put_unaligned_be64(naa5_comp_a + port_b, arr + num); 1104 + put_unaligned_be64(naa3_comp_a + port_b, arr + num); 1106 1105 num += 8; 1107 1106 1108 1107 return num; ··· 1932 1931 }; 1933 1932 int port_a, port_b; 1934 1933 1935 - put_unaligned_be64(naa5_comp_a, sas_pcd_m_pg + 16); 1936 - put_unaligned_be64(naa5_comp_c + 1, sas_pcd_m_pg + 24); 1937 - put_unaligned_be64(naa5_comp_a, sas_pcd_m_pg + 64); 1938 - put_unaligned_be64(naa5_comp_c + 1, sas_pcd_m_pg + 72); 1934 + put_unaligned_be64(naa3_comp_a, sas_pcd_m_pg + 16); 1935 + put_unaligned_be64(naa3_comp_c + 1, sas_pcd_m_pg + 24); 1936 + put_unaligned_be64(naa3_comp_a, sas_pcd_m_pg + 64); 1937 + put_unaligned_be64(naa3_comp_c + 1, sas_pcd_m_pg + 72); 1939 1938 port_a = target_dev_id + 1; 1940 1939 port_b = port_a + 1; 1941 1940 memcpy(p, sas_pcd_m_pg, sizeof(sas_pcd_m_pg));