]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
[SCSI] hpsa: eliminate 8 external target limitation
authorScott Teel <scott.teel@hp.com>
Thu, 19 Jan 2012 20:01:19 +0000 (14:01 -0600)
committerJoe Jin <joe.jin@oracle.com>
Tue, 15 May 2012 06:47:53 +0000 (14:47 +0800)
Driver limits SAS external target IDs to range 1-8.
Need to increase limit and clean up overlapping concepts of targets and paths
in the code.

There are several defined constants that control this:
HPSA_MAX_TARGETS_PER_CTLR     16
MAX_MSA2XXX_ENCLOSURES        32
HPSA_MAX_PATHS                8

We can condense this to one constant:
MAX_EXT_TARGETS               32

SAS switches allow for 8 connections, and there is capacity for 4 switches per
enclosure in largest blade enclosure type.

Signed-off-by: Scott Teel <scott.teel@hp.com>
Signed-off-by: Stephen M. Cameron <scameron@beardog.cce.hp.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
(cherry picked from commit aca4a5200dc2b0835f5477d6609a05b0401a91f3)

Signed-off-by: Joe Jin <joe.jin@oracle.com>
drivers/scsi/hpsa.c
drivers/scsi/hpsa_cmd.h

index 3e0d659d232c0f0e48790067640d4f2be7a30001..526b43382d8804eb72ac3cb5ae16b95d0d54f58d 100644 (file)
@@ -1727,9 +1727,9 @@ static int add_msa2xxx_enclosure_device(struct ctlr_info *h,
        if (is_scsi_rev_5(h))
                return 0; /* p1210m doesn't need to do this. */
 
-       if (*nmsa2xxx_enclosures >= MAX_MSA2XXX_ENCLOSURES) {
-               dev_warn(&h->pdev->dev, "Maximum number of MSA2XXX "
-                       "enclosures exceeded.  Check your hardware "
+       if (*nmsa2xxx_enclosures >= MAX_EXT_TARGETS) {
+               dev_warn(&h->pdev->dev, "Maximum number of external "
+                       "target devices exceeded.  Check your hardware "
                        "configuration.");
                return 0;
        }
@@ -1835,7 +1835,7 @@ static void hpsa_update_scsi_devices(struct ctlr_info *h, int hostno)
        int reportlunsize = sizeof(*physdev_list) + HPSA_MAX_PHYS_LUN * 8;
        int i, nmsa2xxx_enclosures, ndevs_to_allocate;
        int raid_ctlr_position;
-       DECLARE_BITMAP(lunzerobits, HPSA_MAX_TARGETS_PER_CTLR);
+       DECLARE_BITMAP(lunzerobits, MAX_EXT_TARGETS);
 
        currentsd = kzalloc(sizeof(*currentsd) * HPSA_MAX_DEVICES, GFP_KERNEL);
        physdev_list = kzalloc(reportlunsize, GFP_KERNEL);
@@ -1852,11 +1852,11 @@ static void hpsa_update_scsi_devices(struct ctlr_info *h, int hostno)
                        logdev_list, &nlogicals))
                goto out;
 
-       /* We might see up to 32 MSA2xxx enclosures, actually 8 of them
-        * but each of them 4 times through different paths.  The plus 1
-        * is for the RAID controller.
+       /* We might see up to the maximum number of logical and physical disks
+        * plus external target devices, and a device for the local RAID
+        * controller.
         */
-       ndevs_to_allocate = nphysicals + nlogicals + MAX_MSA2XXX_ENCLOSURES + 1;
+       ndevs_to_allocate = nphysicals + nlogicals + MAX_EXT_TARGETS + 1;
 
        /* Allocate the per device structures */
        for (i = 0; i < ndevs_to_allocate; i++) {
index 3fd4715935c27658a74ea1e14db98e56e17b4d99..d5caa18ccc5f46220b80c0800e57cc85a0fbb86f 100644 (file)
@@ -122,12 +122,11 @@ union u64bit {
 };
 
 /* FIXME this is a per controller value (barf!) */
-#define HPSA_MAX_TARGETS_PER_CTLR 16
 #define HPSA_MAX_LUN 1024
 #define HPSA_MAX_PHYS_LUN 1024
-#define MAX_MSA2XXX_ENCLOSURES 32
+#define MAX_EXT_TARGETS 32
 #define HPSA_MAX_DEVICES (HPSA_MAX_PHYS_LUN + HPSA_MAX_LUN + \
-       MAX_MSA2XXX_ENCLOSURES + 1) /* + 1 is for the controller itself */
+       MAX_EXT_TARGETS + 1) /* + 1 is for the controller itself */
 
 /* SCSI-3 Commands */
 #pragma pack(1)