mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 12:11:40 +00:00
scsi: ipr: System crashes when seeing type 20 error
Test team saw "4041: Incomplete multipath connection between enclosure and device" when I/O drawers/drives have bad connections. System crashes when handling these type 20 errors. [ 5.332452] ipr: 3/00-06-09: 4041: Incomplete multipath connection between enclosure and device [ 5.332460] ipr: 3/00-06-09: The IOA failed to detect an expected path to a device [ 5.332465] ipr: 3/00-06-09: Inactive path is failed: Resource Path=3/00-04-09 [ 5.332471] ipr: 3/00-06-09: Functional IOA port: Resource Path=3/00-04, Link rate=unknown, WWN=5005076059C38E05 [ 5.332478] ipr: 3/00-06-09: Incorrectly connected Device LUN: Resource Path=3/00-00-00-00-00-00-00-00-00-20-00-00-24-00-00-00-0, Link rate=unknown, WWN=0020000024000000 [ 5.332487] ipr: 3/00-06-09: Path element=FF: Resource Path=3/50-05-07-60-45-56-5A-9C-00-00-00-00-00-00-00-00-0, Link rate=unknown WWN=0000000000000000 [ 5.332492] ipr: 00000000: 54520EC8 00000000 00000000 4E532050 [ 5.332495] ipr: 00000010: 45522054 49434B3D 00000050 278130E6 [ 5.332498] ipr: 00000020: 033B5300 03282584 4C4D00E0 278039F3 [ 5.332501] ipr: 00000030: 033B5180 03282404 4C4D00E0 276A0282 [ 5.332504] ipr: 00000040: 033B5000 03281E04 447000E0 27697D19 [ 5.332507] ipr: 00000050: 033B4E80 03281D84 447000E0 27690524 [ 5.332509] ipr: 00000060: 033B4D00 03281C84 447000E0 27687FDA [ 5.332512] ipr: 00000070: 033B4B80 03281C04 447000E0 2767E787 [ 5.332515] ipr: 00000080: 033B4A00 03281B04 447000E0 27674F0A Link: https://lore.kernel.org/r/1624587085-10073-1-git-send-email-wenxiong@linux.vnet.ibm.com Acked-by: Brian King <brking@linux.vnet.ibm.com> Signed-off-by: Wen Xiong <wenxiong@linux.vnet.ibm.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
104739aca4
commit
7df47cdf19
@ -1300,7 +1300,7 @@ static char *__ipr_format_res_path(u8 *res_path, char *buffer, int len)
|
||||
|
||||
*p = '\0';
|
||||
p += scnprintf(p, buffer + len - p, "%02X", res_path[0]);
|
||||
for (i = 1; res_path[i] != 0xff && ((i * 3) < len); i++)
|
||||
for (i = 1; res_path[i] != 0xff && i < IPR_RES_PATH_BYTES; i++)
|
||||
p += scnprintf(p, buffer + len - p, "-%02X", res_path[i]);
|
||||
|
||||
return buffer;
|
||||
@ -1323,7 +1323,7 @@ static char *ipr_format_res_path(struct ipr_ioa_cfg *ioa_cfg,
|
||||
|
||||
*p = '\0';
|
||||
p += scnprintf(p, buffer + len - p, "%d/", ioa_cfg->host->host_no);
|
||||
__ipr_format_res_path(res_path, p, len - (buffer - p));
|
||||
__ipr_format_res_path(res_path, p, len - (p - buffer));
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
@ -428,6 +428,7 @@ struct ipr_config_table_entry64 {
|
||||
__be64 lun;
|
||||
__be64 lun_wwn[2];
|
||||
#define IPR_MAX_RES_PATH_LENGTH 48
|
||||
#define IPR_RES_PATH_BYTES 8
|
||||
__be64 res_path;
|
||||
struct ipr_std_inq_data std_inq_data;
|
||||
u8 reserved2[4];
|
||||
|
Loading…
Reference in New Issue
Block a user