mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-05 18:39:59 +00:00
scsi: smartpqi: add module param for exposure order
Expose physical devices before logical devices. Reviewed-by: Scott Benesh <scott.benesh@microsemi.com> Reviewed-by: Kevin Barnett <kevin.barnett@microsemi.com> Signed-off-by: Gilbert Wu <gilbert.wu@microsemi.com> Signed-off-by: Don Brace <don.brace@microsemi.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
01f2ef6d18
commit
5e6a9760f7
1 changed files with 15 additions and 3 deletions
|
@ -145,6 +145,12 @@ MODULE_PARM_DESC(lockup_action, "Action to take when controller locked up.\n"
|
|||
"\t\tSupported: none, reboot, panic\n"
|
||||
"\t\tDefault: none");
|
||||
|
||||
static int pqi_expose_ld_first;
|
||||
module_param_named(expose_ld_first,
|
||||
pqi_expose_ld_first, int, 0644);
|
||||
MODULE_PARM_DESC(expose_ld_first,
|
||||
"Expose logical drives before physical drives.");
|
||||
|
||||
static char *raid_levels[] = {
|
||||
"RAID-0",
|
||||
"RAID-4",
|
||||
|
@ -1988,6 +1994,8 @@ static int pqi_update_scsi_devices(struct pqi_ctrl_info *ctrl_info)
|
|||
unsigned int num_valid_devices;
|
||||
bool is_physical_device;
|
||||
u8 *scsi3addr;
|
||||
unsigned int physical_index;
|
||||
unsigned int logical_index;
|
||||
static char *out_of_memory_msg =
|
||||
"failed to allocate memory, device discovery stopped";
|
||||
|
||||
|
@ -2050,19 +2058,23 @@ static int pqi_update_scsi_devices(struct pqi_ctrl_info *ctrl_info)
|
|||
|
||||
device = NULL;
|
||||
num_valid_devices = 0;
|
||||
physical_index = 0;
|
||||
logical_index = 0;
|
||||
|
||||
for (i = 0; i < num_new_devices; i++) {
|
||||
|
||||
if (i < num_physicals) {
|
||||
if ((!pqi_expose_ld_first && i < num_physicals) ||
|
||||
(pqi_expose_ld_first && i >= num_logicals)) {
|
||||
is_physical_device = true;
|
||||
phys_lun_ext_entry = &physdev_list->lun_entries[i];
|
||||
phys_lun_ext_entry =
|
||||
&physdev_list->lun_entries[physical_index++];
|
||||
log_lun_ext_entry = NULL;
|
||||
scsi3addr = phys_lun_ext_entry->lunid;
|
||||
} else {
|
||||
is_physical_device = false;
|
||||
phys_lun_ext_entry = NULL;
|
||||
log_lun_ext_entry =
|
||||
&logdev_list->lun_entries[i - num_physicals];
|
||||
&logdev_list->lun_entries[logical_index++];
|
||||
scsi3addr = log_lun_ext_entry->lunid;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue