[SCSI] qla2xxx: Allow an override of the registered maximum LUN.
authorAndrew Vasquez <andrew.vasquez@qlogic.com>
Tue, 10 May 2011 18:30:13 +0000 (11:30 -0700)
committerJames Bottomley <jbottomley@parallels.com>
Tue, 17 May 2011 07:34:56 +0000 (11:34 +0400)
The 'max_lun' value registered for each scsi_host is currently
capped at 0xffff.  The new module parameter can allow for
2nd-level flat-space addressing method-infrastructure to be
supported.

Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: Madhuranath Iyengar <Madhu.Iyengar@qlogic.com>
Signed-off-by: James Bottomley <jbottomley@parallels.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/scsi/qla2xxx/qla_gbl.h
drivers/scsi/qla2xxx/qla_mid.c
drivers/scsi/qla2xxx/qla_os.c

index 53968cc..79a12aa 100644 (file)
@@ -103,6 +103,7 @@ extern int ql2xenabledif;
 extern int ql2xenablehba_err_chk;
 extern int ql2xtargetreset;
 extern int ql2xdontresethba;
+extern unsigned int ql2xmaxlun;
 
 extern int qla2x00_loop_reset(scsi_qla_host_t *);
 extern void qla2x00_abort_all_cmds(scsi_qla_host_t *, int);
index e34d7dd..5e34391 100644 (file)
@@ -456,7 +456,7 @@ qla24xx_create_vhost(struct fc_vport *fc_vport)
        else
                host->max_cmd_len = MAX_CMDSZ;
        host->max_channel = MAX_BUSES - 1;
-       host->max_lun = MAX_LUNS;
+       host->max_lun = ql2xmaxlun;
        host->unique_id = host->host_no;
        host->max_id = MAX_TARGETS_2200;
        host->transportt = qla2xxx_transport_vport_template;
index 8401a6f..f461925 100644 (file)
@@ -172,6 +172,12 @@ MODULE_PARM_DESC(ql2xdontresethba,
        " 0 (Default) -- Reset on failure.\n"
        " 1 -- Do not reset on failure.\n");
 
+uint ql2xmaxlun = MAX_LUNS;
+module_param(ql2xmaxlun, uint, S_IRUGO);
+MODULE_PARM_DESC(ql2xmaxlun,
+               "Defines the maximum LU number to register with the SCSI "
+               "midlayer. Default is 65535.");
+
 /*
  * SCSI host template entry points
  */
@@ -2136,7 +2142,7 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
        else
                host->max_cmd_len = MAX_CMDSZ;
        host->max_channel = MAX_BUSES - 1;
-       host->max_lun = MAX_LUNS;
+       host->max_lun = ql2xmaxlun;
        host->transportt = qla2xxx_transport_template;
        sht->vendor_id = (SCSI_NL_VID_TYPE_PCI | PCI_VENDOR_ID_QLOGIC);