hpsa: add SMR drive support

Reviewed-by: Mahesh Rajashekhara <mahesh.rajashekhara@microsemi.com>
Reviewed-by: Justin Lindley <justin.lindley@microsemi.com>
Reviewed-by: Scott Teel <scott.teel@microsemi.com>
Reviewed-by: Kevin Barnett <kevin.barnett@microsemi.com>
Reviewed-by: Matthew R. Ochs <mrochs@linux.vnet.ibm.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:
Don Brace 2016-02-23 15:16:15 -06:00 committed by Martin K. Petersen
parent 17a9e54a99
commit af15ed3645
1 changed files with 10 additions and 2 deletions

View File

@ -809,7 +809,8 @@ static ssize_t path_info_show(struct device *dev,
PAGE_SIZE - output_len, PAGE_SIZE - output_len,
"PORT: %.2s ", "PORT: %.2s ",
phys_connector); phys_connector);
if (hdev->devtype == TYPE_DISK && hdev->expose_device) { if ((hdev->devtype == TYPE_DISK || hdev->devtype == TYPE_ZBC) &&
hdev->expose_device) {
if (box == 0 || box == 0xFF) { if (box == 0 || box == 0xFF) {
output_len += scnprintf(buf + output_len, output_len += scnprintf(buf + output_len,
PAGE_SIZE - output_len, PAGE_SIZE - output_len,
@ -1166,6 +1167,7 @@ static void hpsa_show_dev_msg(const char *level, struct ctlr_info *h,
snprintf(label, LABEL_SIZE, "enclosure"); snprintf(label, LABEL_SIZE, "enclosure");
break; break;
case TYPE_DISK: case TYPE_DISK:
case TYPE_ZBC:
if (dev->external) if (dev->external)
snprintf(label, LABEL_SIZE, "external"); snprintf(label, LABEL_SIZE, "external");
else if (!is_logical_dev_addr_mode(dev->scsi3addr)) else if (!is_logical_dev_addr_mode(dev->scsi3addr))
@ -1636,6 +1638,8 @@ static void hpsa_figure_phys_disk_ptrs(struct ctlr_info *h,
continue; continue;
if (dev[j]->devtype != TYPE_DISK) if (dev[j]->devtype != TYPE_DISK)
continue; continue;
if (dev[j]->devtype != TYPE_ZBC)
continue;
if (is_logical_device(dev[j])) if (is_logical_device(dev[j]))
continue; continue;
if (dev[j]->ioaccel_handle != dd[i].ioaccel_handle) if (dev[j]->ioaccel_handle != dd[i].ioaccel_handle)
@ -1681,6 +1685,8 @@ static void hpsa_update_log_drive_phys_drive_ptrs(struct ctlr_info *h,
continue; continue;
if (dev[i]->devtype != TYPE_DISK) if (dev[i]->devtype != TYPE_DISK)
continue; continue;
if (dev[i]->devtype != TYPE_ZBC)
continue;
if (!is_logical_device(dev[i])) if (!is_logical_device(dev[i]))
continue; continue;
@ -3715,7 +3721,8 @@ static int hpsa_update_device_info(struct ctlr_info *h,
hpsa_get_device_id(h, scsi3addr, this_device->device_id, 8, hpsa_get_device_id(h, scsi3addr, this_device->device_id, 8,
sizeof(this_device->device_id)); sizeof(this_device->device_id));
if (this_device->devtype == TYPE_DISK && if ((this_device->devtype == TYPE_DISK ||
this_device->devtype == TYPE_ZBC) &&
is_logical_dev_addr_mode(scsi3addr)) { is_logical_dev_addr_mode(scsi3addr)) {
int volume_offline; int volume_offline;
@ -4183,6 +4190,7 @@ static void hpsa_update_scsi_devices(struct ctlr_info *h)
ncurrent++; ncurrent++;
break; break;
case TYPE_DISK: case TYPE_DISK:
case TYPE_ZBC:
if (this_device->physical_device) { 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. */