From: Christof Schmitt Date: Wed, 8 Sep 2010 12:39:56 +0000 (+0200) Subject: [SCSI] zfcp: Allow midlayer to scan for LUNs when running in NPIV mode X-Git-Tag: v2.6.37-rc1~159^2~38 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f8210e34887e1feb977a9b6b8caa086855af40c9;p=profile%2Fivi%2Fkernel-x86-ivi.git [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 Signed-off-by: Christof Schmitt Signed-off-by: James Bottomley --- diff --git a/drivers/s390/scsi/zfcp_scsi.c b/drivers/s390/scsi/zfcp_scsi.c index bc7217b..1e8d0cc 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) unit = zfcp_unit_find(port, zfcp_scsi_dev_lun(sdev)); if (unit) put_device(&unit->dev); - else { + + if (!unit && !(adapter->connection_features & FSF_FEATURE_NPIV_MODE)) { put_device(&port->dev); return -ENXIO; } @@ -309,8 +310,8 @@ int zfcp_adapter_scsi_register(struct zfcp_adapter *adapter) } /* tell the SCSI stack some characteristics of this adapter */ - adapter->scsi_host->max_id = 1; - adapter->scsi_host->max_lun = 1; + adapter->scsi_host->max_id = 511; + adapter->scsi_host->max_lun = 0xFFFFFFFF; adapter->scsi_host->max_channel = 0; adapter->scsi_host->unique_id = dev_id.devno; adapter->scsi_host->max_cmd_len = 16; /* in struct fcp_cmnd */ @@ -687,7 +688,6 @@ struct fc_function_template zfcp_transport_functions = { .show_host_port_type = 1, .show_host_speed = 1, .show_host_port_id = 1, - .disable_target_scan = 1, .dd_bsg_size = sizeof(struct zfcp_fsf_ct_els), };