isci: fix reset timeout handling
Subsystems (2)
PATCH 1/1 isci: fix reset timeout handling
Remove an erroneous BUG_ON() in the case of a hard reset timeout. If a SATA device is unable to restore the link in time we expect the port to go back to the "awaiting link-up" state. Since the timeout path notified libsas that the port is down, we want to notify libsas when it returns and expect that the port may not be in the "resetting" state.
Also, once we have notified that the port is down, in-progress resets should abort immediately. Return -ENODEV from ->lldd_I_T_nexus_reset() to indicate that libata error handling should end.
--- drivers/scsi/isci/port_config.c | 5 ----- drivers/scsi/isci/task.c | 2 +- 2 files changed, 1 insertions(+), 6 deletions(-)
drivers/scsi/isci/port_config.c +0 -5
@@ -617,11 +617,6 @@ static void sci_apc_agent_link_up(struct isci_host *ihost,/* the phy is already the part of the port */ u32 port_state = iport->sm.current_state_id; -/* if the PORT'S state is resetting then the link up is from -* port hard reset in this case, we need to tell the port -* that link up is recieved -*/ -BUG_ON (port_state !=SCI_PORT_RESETTING ); port_agent->phy_ready_mask |=1 << phy_index;sci_port_link_up (iport, iphy); }
drivers/scsi/isci/task.c +1 -1
@@ -801,7 +801,7 @@ int isci_task_I_T_nexus_reset(struct domain_device *dev)/* XXX: need to cleanup any ireqs targeting this * domain_device */ - ret =TMF_RESP_FUNC_COMPLETE ; + ret = -ENODEV ; goto out; }
Do anybody know the format of bsg device node name?
For example of bsg device node name:
[4:0:0:0]
Each field is Hex or Dec?
[BackGroup]
I am using lsscsi -g command to get SCSI device list as the following.
If bsg device name's target number field is over ten, Will it display [4:0:10:0] or [4:0:a:0]?
# lsscsi -g [0:0:0:0] cd/dvd HL-DT-ST DVD+-RW GSA-H53N B104 /dev/sr0 /dev/sg0 [3:0:0:0] disk ATA WDC WD1600AAJS-1 05.0 /dev/sda /dev/sg1 [4:0:0:0] disk ATA Hitachi HDT72102 A31B /dev/sdb /dev/sg2 [4:0:1:0] disk ATA Hitachi HDT72502 A73A /dev/sdc /dev/sg3 [4:0:2:0] disk ATA Hitachi HDT72502 A73A /dev/sdd /dev/sg4 [4:0:3:0] disk ATA Hitachi HDT72502 A73A /dev/sde /dev/sg5 [4:0:4:0] disk ATA Hitachi HDT72502 A73A /dev/sdf /dev/sg6 [4:0:5:0] disk ATA Hitachi HDT72502 A73A /dev/sdg /dev/sg7 [4:0:6:0] disk ATA Hitachi HDT72502 A73A /dev/sdh /dev/sg8 [4:0:7:0] disk ATA Hitachi HDT72502 A73A /dev/sdi /dev/sg9 [4:0:8:0] enclosu LSI SAS616x 0502 - /dev/sg10
Thanks !
Re: Do anybody know the format of bsg device node name?
Quoted 10 lines · Newtech Tan
For example of bsg device node name:
[4:0:0:0]Each field is Hex or Dec?
[BackGroup]
I am using lsscsi -g command to get SCSI device list as the following.
If bsg device name's target number field is over ten, Will it display [4:0:10:0] or [4:0:a:0]?
Quoted 12 lines
# lsscsi -g [0:0:0:0] cd/dvd HL-DT-ST DVD+-RW GSA-H53N B104 /dev/sr0 /dev/sg0 [3:0:0:0] disk ATA WDC WD1600AAJS-1 05.0 /dev/sda /dev/sg1 [4:0:0:0] disk ATA Hitachi HDT72102 A31B /dev/sdb /dev/sg2 [4:0:1:0] disk ATA Hitachi HDT72502 A73A /dev/sdc /dev/sg3 [4:0:2:0] disk ATA Hitachi HDT72502 A73A /dev/sdd /dev/sg4 [4:0:3:0] disk ATA Hitachi HDT72502 A73A /dev/sde /dev/sg5 [4:0:4:0] disk ATA Hitachi HDT72502 A73A /dev/sdf /dev/sg6 [4:0:5:0] disk ATA Hitachi HDT72502 A73A /dev/sdg /dev/sg7 [4:0:6:0] disk ATA Hitachi HDT72502 A73A /dev/sdh /dev/sg8 [4:0:7:0] disk ATA Hitachi HDT72502 A73A /dev/sdi /dev/sg9 [4:0:8:0] enclosu LSI SAS616x 0502 - /dev/sg10
/dev/bsg/0:0:0:0
/dev/bsg/3:0:0:0
/dev/bsg/4:0:0:0
etc
Depending on your shell you may need to escape the ":" characters (or surround the whole string in quotes).
Also CONFIG_BLK_DEV_BSG needs to be defined in your kernel build but as udev needs that, that is probably already the case.
Looks like you have a SAS expander there as well. It will have a bsg node name like:
/dev/bsg/expander-4:0
that my smp_utils package can use. There might also be a SAS host node like this:
/dev/bsg/sas_host4
Doug Gilbert
Quoted 6 lines · Dan J
Remove an erroneous
BUG_ON()in the case of a hard reset timeout. If a SATA device is unable to restore the link in time we expect the port to go back to the "awaiting link-up" state. Since the timeout path notified libsas that the port is down, we want to notify libsas when it returns and expect that the port may not be in the "resetting" state.
Quoted 8 lines
Also, once we have notified that the port is down, in-progress resets should abort immediately. Return
-ENODEVfrom ->lldd_I_T_nexus_reset() to indicate that libata error handling should end.Cc <[email protected]>Reported-by Xun Ni <[email protected]>Tested-by Xun Ni <[email protected]>Signed-off-by Dan Williams <[email protected]>