diff options
author | Jeff Skirvin <jeffrey.d.skirvin@intel.com> | 2012-03-09 01:41:56 -0500 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2012-05-17 17:33:39 -0400 |
commit | 033751f6643adf616b85ac5eea7ce784bdde1b50 (patch) | |
tree | 77135e835a84ce987c87fe2623238eab195bfa80 /drivers | |
parent | aa20d9343079b1f0bebd43dec82ecfd4af5e43da (diff) |
isci: Only set IDEV_GONE in the device stop path.
Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/isci/port.c | 23 | ||||
-rw-r--r-- | drivers/scsi/isci/remote_device.c | 3 |
2 files changed, 0 insertions, 26 deletions
diff --git a/drivers/scsi/isci/port.c b/drivers/scsi/isci/port.c index f1866b0dc195..da0c4e1b9b30 100644 --- a/drivers/scsi/isci/port.c +++ b/drivers/scsi/isci/port.c | |||
@@ -240,32 +240,9 @@ static void isci_port_link_down(struct isci_host *isci_host, | |||
240 | struct isci_phy *isci_phy, | 240 | struct isci_phy *isci_phy, |
241 | struct isci_port *isci_port) | 241 | struct isci_port *isci_port) |
242 | { | 242 | { |
243 | struct isci_remote_device *isci_device; | ||
244 | |||
245 | dev_dbg(&isci_host->pdev->dev, | 243 | dev_dbg(&isci_host->pdev->dev, |
246 | "%s: isci_port = %p\n", __func__, isci_port); | 244 | "%s: isci_port = %p\n", __func__, isci_port); |
247 | 245 | ||
248 | if (isci_port) { | ||
249 | |||
250 | /* check to see if this is the last phy on this port. */ | ||
251 | if (isci_phy->sas_phy.port && | ||
252 | isci_phy->sas_phy.port->num_phys == 1) { | ||
253 | /* change the state for all devices on this port. The | ||
254 | * next task sent to this device will be returned as | ||
255 | * SAS_TASK_UNDELIVERED, and the scsi mid layer will | ||
256 | * remove the target | ||
257 | */ | ||
258 | list_for_each_entry(isci_device, | ||
259 | &isci_port->remote_dev_list, | ||
260 | node) { | ||
261 | dev_dbg(&isci_host->pdev->dev, | ||
262 | "%s: isci_device = %p\n", | ||
263 | __func__, isci_device); | ||
264 | set_bit(IDEV_GONE, &isci_device->flags); | ||
265 | } | ||
266 | } | ||
267 | } | ||
268 | |||
269 | /* Notify libsas of the borken link, this will trigger calls to our | 246 | /* Notify libsas of the borken link, this will trigger calls to our |
270 | * isci_port_deformed and isci_dev_gone functions. | 247 | * isci_port_deformed and isci_dev_gone functions. |
271 | */ | 248 | */ |
diff --git a/drivers/scsi/isci/remote_device.c b/drivers/scsi/isci/remote_device.c index cf5d554e5056..b26ab05107dd 100644 --- a/drivers/scsi/isci/remote_device.c +++ b/drivers/scsi/isci/remote_device.c | |||
@@ -195,9 +195,6 @@ static void isci_remote_device_not_ready(struct isci_host *ihost, | |||
195 | "%s: isci_device = %p; reason = %d\n", __func__, idev, reason); | 195 | "%s: isci_device = %p; reason = %d\n", __func__, idev, reason); |
196 | 196 | ||
197 | switch (reason) { | 197 | switch (reason) { |
198 | case SCIC_REMOTE_DEVICE_NOT_READY_STOP_REQUESTED: | ||
199 | set_bit(IDEV_GONE, &idev->flags); | ||
200 | break; | ||
201 | case SCIC_REMOTE_DEVICE_NOT_READY_SATA_SDB_ERROR_FIS_RECEIVED: | 198 | case SCIC_REMOTE_DEVICE_NOT_READY_SATA_SDB_ERROR_FIS_RECEIVED: |
202 | set_bit(IDEV_IO_NCQERROR, &idev->flags); | 199 | set_bit(IDEV_IO_NCQERROR, &idev->flags); |
203 | 200 | ||