diff options
Diffstat (limited to 'drivers/scsi/libsas/sas_discover.c')
-rw-r--r-- | drivers/scsi/libsas/sas_discover.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/drivers/scsi/libsas/sas_discover.c b/drivers/scsi/libsas/sas_discover.c index 18fa364aa00f..0d58a8beaa3d 100644 --- a/drivers/scsi/libsas/sas_discover.c +++ b/drivers/scsi/libsas/sas_discover.c | |||
@@ -207,22 +207,22 @@ static void sas_probe_devices(struct work_struct *work) | |||
207 | 207 | ||
208 | clear_bit(DISCE_PROBE, &port->disc.pending); | 208 | clear_bit(DISCE_PROBE, &port->disc.pending); |
209 | 209 | ||
210 | list_for_each_entry_safe(dev, n, &port->disco_list, disco_list_node) { | 210 | /* devices must be domain members before link recovery and probe */ |
211 | int err; | 211 | list_for_each_entry(dev, &port->disco_list, disco_list_node) { |
212 | |||
213 | spin_lock_irq(&port->dev_list_lock); | 212 | spin_lock_irq(&port->dev_list_lock); |
214 | list_add_tail(&dev->dev_list_node, &port->dev_list); | 213 | list_add_tail(&dev->dev_list_node, &port->dev_list); |
215 | spin_unlock_irq(&port->dev_list_lock); | 214 | spin_unlock_irq(&port->dev_list_lock); |
215 | } | ||
216 | 216 | ||
217 | err = sas_rphy_add(dev->rphy); | 217 | sas_probe_sata(port); |
218 | 218 | ||
219 | if (err) { | 219 | list_for_each_entry_safe(dev, n, &port->disco_list, disco_list_node) { |
220 | SAS_DPRINTK("%s: for %s device %16llx returned %d\n", | 220 | int err; |
221 | __func__, dev->parent ? "exp-attached" : | 221 | |
222 | "direct-attached", | 222 | err = sas_rphy_add(dev->rphy); |
223 | SAS_ADDR(dev->sas_addr), err); | 223 | if (err) |
224 | sas_unregister_dev(port, dev); | 224 | sas_fail_probe(dev, __func__, err); |
225 | } else | 225 | else |
226 | list_del_init(&dev->disco_list_node); | 226 | list_del_init(&dev->disco_list_node); |
227 | } | 227 | } |
228 | } | 228 | } |