mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 17:50:54 +07:00
[SCSI] hpsa: eliminate 8 external target limitation
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>
This commit is contained in:
parent
1f310bde46
commit
aca4a5200d
@ -1694,9 +1694,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;
|
||||
}
|
||||
@ -1802,7 +1802,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);
|
||||
@ -1819,11 +1819,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++) {
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user