Another zfcp fix for 2.6.37-rc
Subsystems (3)
cover Another zfcp fix for 2.6.37-rc
James,
i know this is late, but if there will be another merge of scsi fixes for the 2.6.37-rc cycle, i would like to have this patch included on top of the previously sent fixes.
The REPORT LUNS scan from the SCSI midlayer works well after we enabled it with the zfcp changes in 2.6.37-rc1. But we discovered that we need a way to disable the LUN scan for the zfcpdump userspace tool. The zfcpdump tool runs in a restricted environment and there is not enough memory to attach SCSI devices for a large SAN fabric.
Introducing a new zfcp module parameter that is set for zfcpdump is the best solution to have the REPORT LUNS scan by default and allow to disable it from zfcpdump.
--
Christof
PATCH 1/1 zfcp: Add allow_lun_scan module parameter
From: Christof Schmitt <[email protected]>
The zfcpdump tool requires a method to attach exactly one LUN. The easiest way to achieve this is to add a new zfcp module parameter. When allow_lun_scan is set to "false", zfcp only accepts LUNs that have been configured through the unit_add sysfs interface.
--- drivers/s390/scsi/zfcp_scsi.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
drivers/s390/scsi/zfcp_scsi.c +6 -1
@@ -30,6 +30,10 @@ module_param_named(dif, enable_dif, boolMODULE_PARM_DESC (dif,"Enable DIF/DIX data integrity support" );#endif +static bool allow_lun_scan =1 ; +module_param (allow_lun_scan, bool,0600 ); +MODULE_PARM_DESC (allow_lun_scan,"For NPIV, scan and attach all storage LUNs" ); +static int zfcp_scsi_change_queue_depth (struct scsi_device *sdev,int depth,int reason) {
@@ -134,6 +138,7 @@ static int zfcp_scsi_slave_alloc(structstruct zfcp_scsi_dev *zfcp_sdev =sdev_to_zfcp (sdev);struct zfcp_port *port;struct zfcp_unit *unit; +int npiv = adapter->connection_features &FSF_FEATURE_NPIV_MODE ; port =zfcp_get_port_by_wwpn (adapter, rport->port_name);if (!port)
@@ -143,7 +148,7 @@ static int zfcp_scsi_slave_alloc(structif (unit)put_device (&unit->dev); -if (!unit && !(adapter->connection_features &FSF_FEATURE_NPIV_MODE )) { +if (!unit && !(allow_lun_scan && npiv)) {put_device (&port->dev);return -ENXIO ; }