* [PATCH] convert mptsas over to end_device/expander allocations
@ 2006-03-18 20:54 James Bottomley
0 siblings, 0 replies; only message in thread
From: James Bottomley @ 2006-03-18 20:54 UTC (permalink / raw)
To: Moore, Eric, linux-scsi
The conversion of mptsas should allow the elimination of the contained
flag in the sas transport class.
James
diff --git a/drivers/message/fusion/mptsas.c b/drivers/message/fusion/mptsas.c
--- a/drivers/message/fusion/mptsas.c
+++ b/drivers/message/fusion/mptsas.c
@@ -363,6 +363,14 @@ mptsas_sas_enclosure_pg0(MPT_ADAPTER *io
return error;
}
+static int
+mptsas_slave_configure(struct scsi_device *sdev)
+{
+ sas_read_port_mode_page(sdev);
+
+ return mptscsih_slave_configure(sdev);
+}
+
/*
* This is pretty ugly. We will be able to seriously clean it up
* once the DV code in mptscsih goes away and we can properly
@@ -486,7 +494,7 @@ static struct scsi_host_template mptsas_
.queuecommand = mptscsih_qcmd,
.target_alloc = mptscsih_target_alloc,
.slave_alloc = mptsas_slave_alloc,
- .slave_configure = mptscsih_slave_configure,
+ .slave_configure = mptsas_slave_configure,
.target_destroy = mptscsih_target_destroy,
.slave_destroy = mptsas_slave_destroy,
.change_queue_depth = mptscsih_change_queue_depth,
@@ -1249,6 +1257,7 @@ static int mptsas_probe_one_phy(struct d
(!phy_info->rphy)) {
struct sas_rphy *rphy;
+ struct sas_identify identify;
ioc = phy_to_ioc(phy_info->phy);
@@ -1261,11 +1270,24 @@ static int mptsas_probe_one_phy(struct d
mptsas_is_end_device(&phy_info->attached))
return 0;
- rphy = sas_rphy_alloc(phy);
+ mptsas_parse_device_info(&identify, &phy_info->attached);
+ switch (identify.device_type) {
+ case SAS_END_DEVICE:
+ rphy = sas_end_device_alloc(phy);
+ break;
+ case SAS_EDGE_EXPANDER_DEVICE:
+ case SAS_FANOUT_EXPANDER_DEVICE:
+ rphy = sas_expander_alloc(phy, identify.device_type);
+ break;
+ default:
+ rphy = NULL;
+ break;
+ }
if (!rphy)
return 0; /* non-fatal: an rphy can be added later */
- mptsas_parse_device_info(&rphy->identify, &phy_info->attached);
+ rphy->identify = identify;
+
error = sas_rphy_add(rphy);
if (error) {
sas_rphy_free(rphy);
@@ -1654,6 +1676,7 @@ mptsas_hotplug_work(void *arg)
struct mptsas_phyinfo *phy_info;
struct sas_rphy *rphy;
struct scsi_device *sdev;
+ struct sas_identify identify;
char *ds = NULL;
struct mptsas_devinfo sas_device;
VirtTarget *vtarget;
@@ -1779,11 +1802,23 @@ mptsas_hotplug_work(void *arg)
"attaching %s device, channel %d, id %d, phy %d\n",
ioc->name, ds, ev->channel, ev->id, ev->phy_id);
- rphy = sas_rphy_alloc(phy_info->phy);
+ mptsas_parse_device_info(&identify, &phy_info->attached);
+ switch (identify.device_type) {
+ case SAS_END_DEVICE:
+ rphy = sas_end_device_alloc(phy_info->phy);
+ break;
+ case SAS_EDGE_EXPANDER_DEVICE:
+ case SAS_FANOUT_EXPANDER_DEVICE:
+ rphy = sas_expander_alloc(phy_info->phy, identify.device_type);
+ break;
+ default:
+ rphy = NULL;
+ break;
+ }
if (!rphy)
break; /* non-fatal: an rphy can be added later */
- mptsas_parse_device_info(&rphy->identify, &phy_info->attached);
+ rphy->identify = identify;
if (sas_rphy_add(rphy)) {
sas_rphy_free(rphy);
break;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2006-03-18 20:54 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-03-18 20:54 [PATCH] convert mptsas over to end_device/expander allocations James Bottomley
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).