Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 293026
b: refs/heads/master
c: 92625f9
h: refs/heads/master
v: v3
  • Loading branch information
Dan Williams authored and James Bottomley committed Feb 29, 2012
1 parent ad88902 commit e9b5518
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 51 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c666aae6919114d6cff789d79f80cfa85f3a7339
refs/heads/master: 92625f9bff3853951cc75f5bc084ee67c1317d2f
29 changes: 0 additions & 29 deletions trunk/drivers/scsi/libsas/sas_ata.c
Original file line number Diff line number Diff line change
Expand Up @@ -683,35 +683,6 @@ static void sas_get_ata_command_set(struct domain_device *dev)
dev->sata_dev.command_set = ATAPI_COMMAND_SET;
}

void sas_probe_sata(struct work_struct *work)
{
struct domain_device *dev, *n;
struct sas_discovery_event *ev =
container_of(work, struct sas_discovery_event, work);
struct asd_sas_port *port = ev->port;

clear_bit(DISCE_PROBE, &port->disc.pending);

list_for_each_entry_safe(dev, n, &port->disco_list, disco_list_node) {
int err;

spin_lock_irq(&port->dev_list_lock);
list_add_tail(&dev->dev_list_node, &port->dev_list);
spin_unlock_irq(&port->dev_list_lock);

err = sas_rphy_add(dev->rphy);

if (err) {
SAS_DPRINTK("%s: for %s device %16llx returned %d\n",
__func__, dev->parent ? "exp-attached" :
"direct-attached",
SAS_ADDR(dev->sas_addr), err);
sas_unregister_dev(port, dev);
} else
list_del_init(&dev->disco_list_node);
}
}

/**
* sas_discover_sata -- discover an STP/SATA domain device
* @dev: pointer to struct domain_device of interest
Expand Down
44 changes: 31 additions & 13 deletions trunk/drivers/scsi/libsas/sas_discover.c
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ static int sas_get_port_device(struct asd_sas_port *port)

dev->rphy = rphy;

if (dev_is_sata(dev))
if (dev_is_sata(dev) || dev->dev_type == SAS_END_DEV)
list_add_tail(&dev->disco_list_node, &port->disco_list);
else {
spin_lock_irq(&port->dev_list_lock);
Expand Down Expand Up @@ -198,8 +198,34 @@ void sas_notify_lldd_dev_gone(struct domain_device *dev)
}
}

/* ---------- Common/dispatchers ---------- */
static void sas_probe_devices(struct work_struct *work)
{
struct domain_device *dev, *n;
struct sas_discovery_event *ev =
container_of(work, struct sas_discovery_event, work);
struct asd_sas_port *port = ev->port;

clear_bit(DISCE_PROBE, &port->disc.pending);

list_for_each_entry_safe(dev, n, &port->disco_list, disco_list_node) {
int err;

spin_lock_irq(&port->dev_list_lock);
list_add_tail(&dev->dev_list_node, &port->dev_list);
spin_unlock_irq(&port->dev_list_lock);

err = sas_rphy_add(dev->rphy);

if (err) {
SAS_DPRINTK("%s: for %s device %16llx returned %d\n",
__func__, dev->parent ? "exp-attached" :
"direct-attached",
SAS_ADDR(dev->sas_addr), err);
sas_unregister_dev(port, dev);
} else
list_del_init(&dev->disco_list_node);
}
}

/**
* sas_discover_end_dev -- discover an end device (SSP, etc)
Expand All @@ -213,18 +239,10 @@ int sas_discover_end_dev(struct domain_device *dev)

res = sas_notify_lldd_dev_found(dev);
if (res)
goto out_err2;

res = sas_rphy_add(dev->rphy);
if (res)
goto out_err;
return res;
sas_discover_event(dev->port, DISCE_PROBE);

return 0;

out_err:
sas_notify_lldd_dev_gone(dev);
out_err2:
return res;
}

/* ---------- Device registration and unregistration ---------- */
Expand Down Expand Up @@ -491,7 +509,7 @@ void sas_init_disc(struct sas_discovery *disc, struct asd_sas_port *port)
static const work_func_t sas_event_fns[DISC_NUM_EVENTS] = {
[DISCE_DISCOVER_DOMAIN] = sas_discover_domain,
[DISCE_REVALIDATE_DOMAIN] = sas_revalidate_domain,
[DISCE_PROBE] = sas_probe_sata,
[DISCE_PROBE] = sas_probe_devices,
[DISCE_DESTRUCT] = sas_destruct_devices,
};

Expand Down
4 changes: 1 addition & 3 deletions trunk/drivers/scsi/libsas/sas_expander.c
Original file line number Diff line number Diff line change
Expand Up @@ -806,9 +806,7 @@ static struct domain_device *sas_ex_discover_end_dev(
child->rphy = rphy;
sas_fill_in_rphy(child, rphy);

spin_lock_irq(&parent->port->dev_list_lock);
list_add_tail(&child->dev_list_node, &parent->port->dev_list);
spin_unlock_irq(&parent->port->dev_list_lock);
list_add_tail(&child->disco_list_node, &parent->port->disco_list);

res = sas_discover_end_dev(child);
if (res) {
Expand Down
5 changes: 0 additions & 5 deletions trunk/include/scsi/sas_ata.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,6 @@ void sas_ata_task_abort(struct sas_task *task);
void sas_ata_strategy_handler(struct Scsi_Host *shost);
void sas_ata_eh(struct Scsi_Host *shost, struct list_head *work_q,
struct list_head *done_q);
void sas_probe_sata(struct work_struct *work);
void sas_ata_schedule_reset(struct domain_device *dev);
void sas_ata_wait_eh(struct domain_device *dev);
#else
Expand Down Expand Up @@ -72,10 +71,6 @@ static inline void sas_ata_eh(struct Scsi_Host *shost, struct list_head *work_q,
{
}

static inline void sas_probe_sata(struct work_struct *work)
{
}

static inline void sas_ata_schedule_reset(struct domain_device *dev)
{
}
Expand Down

0 comments on commit e9b5518

Please sign in to comment.