linux-scsi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] isci: fix reset timeout handling
@ 2013-12-09 19:47 Dan Williams
  2013-12-10  1:32 ` Do anybody know the format of bsg device node name? Newtech Tan
  2013-12-10 13:18 ` [PATCH] isci: fix reset timeout handling Dorau, Lukasz
  0 siblings, 2 replies; 4+ messages in thread
From: Dan Williams @ 2013-12-09 19:47 UTC (permalink / raw)
  To: linux-scsi; +Cc: Xun Ni, dave.jiang, lukasz.dorau, stable, maciej.patelczyk

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.

Cc: <stable@vger.kernel.org>
Reported-by: Xun Ni <xun.ni@intel.com>
Tested-by: Xun Ni <xun.ni@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
---
 drivers/scsi/isci/port_config.c |    5 -----
 drivers/scsi/isci/task.c        |    2 +-
 2 files changed, 1 insertions(+), 6 deletions(-)

diff --git a/drivers/scsi/isci/port_config.c b/drivers/scsi/isci/port_config.c
index 85c77f6b802b..4b84d204db01 100644
--- a/drivers/scsi/isci/port_config.c
+++ b/drivers/scsi/isci/port_config.c
@@ -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);
 	}
diff --git a/drivers/scsi/isci/task.c b/drivers/scsi/isci/task.c
index 0d30ca849e8f..5d6fda72d659 100644
--- a/drivers/scsi/isci/task.c
+++ b/drivers/scsi/isci/task.c
@@ -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;
 	}
 

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-12-10 13:18 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-09 19:47 [PATCH] isci: fix reset timeout handling Dan Williams
2013-12-10  1:32 ` Do anybody know the format of bsg device node name? Newtech Tan
2013-12-10 10:04   ` Douglas Gilbert
2013-12-10 13:18 ` [PATCH] isci: fix reset timeout handling Dorau, Lukasz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).