Commit f8210e34 authored by Christof Schmitt's avatar Christof Schmitt Committed by James Bottomley

[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: default avatarSwen Schillig <swen@vnet.ibm.com>
Signed-off-by: default avatarChristof Schmitt <christof.schmitt@de.ibm.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent b62a8d9b
...@@ -143,7 +143,8 @@ static int zfcp_scsi_slave_alloc(struct scsi_device *sdev) ...@@ -143,7 +143,8 @@ static int zfcp_scsi_slave_alloc(struct scsi_device *sdev)
unit = zfcp_unit_find(port, zfcp_scsi_dev_lun(sdev)); unit = zfcp_unit_find(port, zfcp_scsi_dev_lun(sdev));
if (unit) if (unit)
put_device(&unit->dev); put_device(&unit->dev);
else {
if (!unit && !(adapter->connection_features & FSF_FEATURE_NPIV_MODE)) {
put_device(&port->dev); put_device(&port->dev);
return -ENXIO; return -ENXIO;
} }
...@@ -309,8 +310,8 @@ int zfcp_adapter_scsi_register(struct zfcp_adapter *adapter) ...@@ -309,8 +310,8 @@ int zfcp_adapter_scsi_register(struct zfcp_adapter *adapter)
} }
/* tell the SCSI stack some characteristics of this adapter */ /* tell the SCSI stack some characteristics of this adapter */
adapter->scsi_host->max_id = 1; adapter->scsi_host->max_id = 511;
adapter->scsi_host->max_lun = 1; adapter->scsi_host->max_lun = 0xFFFFFFFF;
adapter->scsi_host->max_channel = 0; adapter->scsi_host->max_channel = 0;
adapter->scsi_host->unique_id = dev_id.devno; adapter->scsi_host->unique_id = dev_id.devno;
adapter->scsi_host->max_cmd_len = 16; /* in struct fcp_cmnd */ adapter->scsi_host->max_cmd_len = 16; /* in struct fcp_cmnd */
...@@ -687,7 +688,6 @@ struct fc_function_template zfcp_transport_functions = { ...@@ -687,7 +688,6 @@ struct fc_function_template zfcp_transport_functions = {
.show_host_port_type = 1, .show_host_port_type = 1,
.show_host_speed = 1, .show_host_speed = 1,
.show_host_port_id = 1, .show_host_port_id = 1,
.disable_target_scan = 1,
.dd_bsg_size = sizeof(struct zfcp_fsf_ct_els), .dd_bsg_size = sizeof(struct zfcp_fsf_ct_els),
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment