diff options
author | Christof Schmitt <christof.schmitt@de.ibm.com> | 2010-09-08 08:39:56 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-09-16 22:54:18 -0400 |
commit | f8210e34887e1feb977a9b6b8caa086855af40c9 (patch) | |
tree | b9b2fe4f289f326334ac7327d7764f0943cc1229 /drivers/s390/scsi | |
parent | b62a8d9b45b971a67a0f8413338c230e3117dff5 (diff) |
[SCSI] zfcp: Allow midlayer to scan for LUNs when running in NPIV mode
Enable the LUN scanning mechanism in the SCSI midlayer:
- Do not set the disable_target_scan bit in the FC transport class.
- Set max_lun to 0xFFFFFFFF to allow the midlayer scan to include
the two-level hierachical LUNs (like 0x40XX40XX00000000, but in SCSI
midlayer LUN format).
- Set max_id to a high value to allow triggering the SCSI device
rescan from sysfs.
When running in NPIV mode, zfcp accepts all LUNs in slave_attach. When
running in non-NPIV mode, the list of zfcp_unit structs determines
which SCSI devices are allowed on the current system.
Reviewed-by: Swen Schillig <swen@vnet.ibm.com>
Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/s390/scsi')
-rw-r--r-- | drivers/s390/scsi/zfcp_scsi.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/s390/scsi/zfcp_scsi.c b/drivers/s390/scsi/zfcp_scsi.c index bc7217b88989..1e8d0cc7e1df 100644 --- a/drivers/s390/scsi/zfcp_scsi.c +++ b/drivers/s390/scsi/zfcp_scsi.c | |||
@@ -143,7 +143,8 @@ static int zfcp_scsi_slave_alloc(struct scsi_device *sdev) | |||
143 | unit = zfcp_unit_find(port, zfcp_scsi_dev_lun(sdev)); | 143 | unit = zfcp_unit_find(port, zfcp_scsi_dev_lun(sdev)); |
144 | if (unit) | 144 | if (unit) |
145 | put_device(&unit->dev); | 145 | put_device(&unit->dev); |
146 | else { | 146 | |
147 | if (!unit && !(adapter->connection_features & FSF_FEATURE_NPIV_MODE)) { | ||
147 | put_device(&port->dev); | 148 | put_device(&port->dev); |
148 | return -ENXIO; | 149 | return -ENXIO; |
149 | } | 150 | } |
@@ -309,8 +310,8 @@ int zfcp_adapter_scsi_register(struct zfcp_adapter *adapter) | |||
309 | } | 310 | } |
310 | 311 | ||
311 | /* tell the SCSI stack some characteristics of this adapter */ | 312 | /* tell the SCSI stack some characteristics of this adapter */ |
312 | adapter->scsi_host->max_id = 1; | 313 | adapter->scsi_host->max_id = 511; |
313 | adapter->scsi_host->max_lun = 1; | 314 | adapter->scsi_host->max_lun = 0xFFFFFFFF; |
314 | adapter->scsi_host->max_channel = 0; | 315 | adapter->scsi_host->max_channel = 0; |
315 | adapter->scsi_host->unique_id = dev_id.devno; | 316 | adapter->scsi_host->unique_id = dev_id.devno; |
316 | adapter->scsi_host->max_cmd_len = 16; /* in struct fcp_cmnd */ | 317 | adapter->scsi_host->max_cmd_len = 16; /* in struct fcp_cmnd */ |
@@ -687,7 +688,6 @@ struct fc_function_template zfcp_transport_functions = { | |||
687 | .show_host_port_type = 1, | 688 | .show_host_port_type = 1, |
688 | .show_host_speed = 1, | 689 | .show_host_speed = 1, |
689 | .show_host_port_id = 1, | 690 | .show_host_port_id = 1, |
690 | .disable_target_scan = 1, | ||
691 | .dd_bsg_size = sizeof(struct zfcp_fsf_ct_els), | 691 | .dd_bsg_size = sizeof(struct zfcp_fsf_ct_els), |
692 | }; | 692 | }; |
693 | 693 | ||