aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libsas/sas_discover.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/libsas/sas_discover.c')
-rw-r--r--drivers/scsi/libsas/sas_discover.c22
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}