Commit 04fa2f44 authored by Kevin Barnett's avatar Kevin Barnett Committed by Martin K. Petersen

hpsa: simplify update scsi devices

remove repeated calculation that checks for physical
or logical devices.
Reviewed-by: default avatarScott Teel <scott.teel@pmcs.com>
Reviewed-by: default avatarJustin Lindley <justin.lindley@pmcs.com>
Reviewed-by: default avatarKevin Barnett <kevin.barnett@pmcs.com>
Reviewed-by: default avatarTomas Henzl <thenzl@redhat.com>
Reviewed-by: default avatarMatthew R. Ochs <mrochs@linux.vnet.ibm.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Signed-off-by: default avatarDon Brace <don.brace@pmcs.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 2a168208
...@@ -3752,6 +3752,7 @@ static void hpsa_update_scsi_devices(struct ctlr_info *h) ...@@ -3752,6 +3752,7 @@ static void hpsa_update_scsi_devices(struct ctlr_info *h)
int ncurrent = 0; int ncurrent = 0;
int i, n_ext_target_devs, ndevs_to_allocate; int i, n_ext_target_devs, ndevs_to_allocate;
int raid_ctlr_position; int raid_ctlr_position;
bool physical_device;
DECLARE_BITMAP(lunzerobits, MAX_EXT_TARGETS); DECLARE_BITMAP(lunzerobits, MAX_EXT_TARGETS);
currentsd = kzalloc(sizeof(*currentsd) * HPSA_MAX_DEVICES, GFP_KERNEL); currentsd = kzalloc(sizeof(*currentsd) * HPSA_MAX_DEVICES, GFP_KERNEL);
...@@ -3812,16 +3813,16 @@ static void hpsa_update_scsi_devices(struct ctlr_info *h) ...@@ -3812,16 +3813,16 @@ static void hpsa_update_scsi_devices(struct ctlr_info *h)
int rc = 0; int rc = 0;
int phys_dev_index = i - (raid_ctlr_position == 0); int phys_dev_index = i - (raid_ctlr_position == 0);
physical_device = i < nphysicals + (raid_ctlr_position == 0);
/* Figure out where the LUN ID info is coming from */ /* Figure out where the LUN ID info is coming from */
lunaddrbytes = figure_lunaddrbytes(h, raid_ctlr_position, lunaddrbytes = figure_lunaddrbytes(h, raid_ctlr_position,
i, nphysicals, nlogicals, physdev_list, logdev_list); i, nphysicals, nlogicals, physdev_list, logdev_list);
/* skip masked non-disk devices */ /* skip masked non-disk devices */
if (MASKED_DEVICE(lunaddrbytes)) if (MASKED_DEVICE(lunaddrbytes) && physical_device &&
if (i < nphysicals + (raid_ctlr_position == 0) && (physdev_list->LUN[phys_dev_index].device_flags & 0x01))
(physdev_list-> continue;
LUN[phys_dev_index].device_flags & 0x01))
continue;
/* Get device type, vendor, model, device id */ /* Get device type, vendor, model, device id */
rc = hpsa_update_device_info(h, lunaddrbytes, tmpdevice, rc = hpsa_update_device_info(h, lunaddrbytes, tmpdevice,
...@@ -3857,10 +3858,13 @@ static void hpsa_update_scsi_devices(struct ctlr_info *h) ...@@ -3857,10 +3858,13 @@ static void hpsa_update_scsi_devices(struct ctlr_info *h)
} }
*this_device = *tmpdevice; *this_device = *tmpdevice;
this_device->physical_device = physical_device;
/* do not expose masked devices */ /*
if (MASKED_DEVICE(lunaddrbytes) && * Expose all devices except for physical devices that
i < nphysicals + (raid_ctlr_position == 0)) * are masked.
*/
if (MASKED_DEVICE(lunaddrbytes) && this_device->physical_device)
this_device->expose_device = 0; this_device->expose_device = 0;
else else
this_device->expose_device = 1; this_device->expose_device = 1;
...@@ -3878,7 +3882,7 @@ static void hpsa_update_scsi_devices(struct ctlr_info *h) ...@@ -3878,7 +3882,7 @@ static void hpsa_update_scsi_devices(struct ctlr_info *h)
ncurrent++; ncurrent++;
break; break;
case TYPE_DISK: case TYPE_DISK:
if (i < nphysicals + (raid_ctlr_position == 0)) { if (this_device->physical_device) {
/* The disk is in HBA mode. */ /* The disk is in HBA mode. */
/* Never use RAID mapper in HBA mode. */ /* Never use RAID mapper in HBA mode. */
this_device->offload_enabled = 0; this_device->offload_enabled = 0;
......
...@@ -37,6 +37,7 @@ struct hpsa_scsi_dev_t { ...@@ -37,6 +37,7 @@ struct hpsa_scsi_dev_t {
unsigned int devtype; unsigned int devtype;
int bus, target, lun; /* as presented to the OS */ int bus, target, lun; /* as presented to the OS */
unsigned char scsi3addr[8]; /* as presented to the HW */ unsigned char scsi3addr[8]; /* as presented to the HW */
u8 physical_device : 1;
u8 expose_device; u8 expose_device;
#define RAID_CTLR_LUNID "\0\0\0\0\0\0\0\0" #define RAID_CTLR_LUNID "\0\0\0\0\0\0\0\0"
unsigned char device_id[16]; /* from inquiry pg. 0x83 */ unsigned char device_id[16]; /* from inquiry pg. 0x83 */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment