scsi: smartpqi: enhance device add and remove messages
Improved formatting of information displayed when devices are added/removed from the system. Reviewed-by: Scott Benesh <scott.benesh@microsemi.com> Signed-off-by: Kevin Barnett <kevin.barnett@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
13bede676b
commit
6de783f666
|
@ -1448,24 +1448,66 @@ static enum pqi_find_result pqi_scsi_find_entry(struct pqi_ctrl_info *ctrl_info,
|
||||||
return DEVICE_NOT_FOUND;
|
return DEVICE_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define PQI_DEV_INFO_BUFFER_LENGTH 128
|
||||||
|
|
||||||
static void pqi_dev_info(struct pqi_ctrl_info *ctrl_info,
|
static void pqi_dev_info(struct pqi_ctrl_info *ctrl_info,
|
||||||
char *action, struct pqi_scsi_dev *device)
|
char *action, struct pqi_scsi_dev *device)
|
||||||
{
|
{
|
||||||
dev_info(&ctrl_info->pci_dev->dev,
|
ssize_t count;
|
||||||
"%s scsi %d:%d:%d:%d: %s %.8s %.16s %-12s SSDSmartPathCap%c En%c qd=%d\n",
|
char buffer[PQI_DEV_INFO_BUFFER_LENGTH];
|
||||||
action,
|
|
||||||
ctrl_info->scsi_host->host_no,
|
count = snprintf(buffer, PQI_DEV_INFO_BUFFER_LENGTH,
|
||||||
device->bus,
|
"%d:%d:", ctrl_info->scsi_host->host_no, device->bus);
|
||||||
|
|
||||||
|
if (device->target_lun_valid)
|
||||||
|
count += snprintf(buffer + count,
|
||||||
|
PQI_DEV_INFO_BUFFER_LENGTH - count,
|
||||||
|
"%d:%d",
|
||||||
device->target,
|
device->target,
|
||||||
device->lun,
|
device->lun);
|
||||||
|
else
|
||||||
|
count += snprintf(buffer + count,
|
||||||
|
PQI_DEV_INFO_BUFFER_LENGTH - count,
|
||||||
|
"-:-");
|
||||||
|
|
||||||
|
if (pqi_is_logical_device(device))
|
||||||
|
count += snprintf(buffer + count,
|
||||||
|
PQI_DEV_INFO_BUFFER_LENGTH - count,
|
||||||
|
" %08x%08x",
|
||||||
|
*((u32 *)&device->scsi3addr),
|
||||||
|
*((u32 *)&device->scsi3addr[4]));
|
||||||
|
else
|
||||||
|
count += snprintf(buffer + count,
|
||||||
|
PQI_DEV_INFO_BUFFER_LENGTH - count,
|
||||||
|
" %016llx", device->sas_address);
|
||||||
|
|
||||||
|
count += snprintf(buffer + count, PQI_DEV_INFO_BUFFER_LENGTH - count,
|
||||||
|
" %s %.8s %.16s ",
|
||||||
scsi_device_type(device->devtype),
|
scsi_device_type(device->devtype),
|
||||||
device->vendor,
|
device->vendor,
|
||||||
device->model,
|
device->model);
|
||||||
pqi_is_logical_device(device) ?
|
|
||||||
pqi_raid_level_to_string(device->raid_level) : "",
|
if (pqi_is_logical_device(device)) {
|
||||||
|
if (device->devtype == TYPE_DISK)
|
||||||
|
count += snprintf(buffer + count,
|
||||||
|
PQI_DEV_INFO_BUFFER_LENGTH - count,
|
||||||
|
"SSDSmartPathCap%c En%c %-12s",
|
||||||
device->offload_configured ? '+' : '-',
|
device->offload_configured ? '+' : '-',
|
||||||
device->offload_enabled_pending ? '+' : '-',
|
(device->offload_enabled ||
|
||||||
device->queue_depth);
|
device->offload_enabled_pending) ? '+' : '-',
|
||||||
|
pqi_raid_level_to_string(device->raid_level));
|
||||||
|
} else {
|
||||||
|
count += snprintf(buffer + count,
|
||||||
|
PQI_DEV_INFO_BUFFER_LENGTH - count,
|
||||||
|
"AIO%c", device->aio_enabled ? '+' : '-');
|
||||||
|
if (device->devtype == TYPE_DISK ||
|
||||||
|
device->devtype == TYPE_ZBC)
|
||||||
|
count += snprintf(buffer + count,
|
||||||
|
PQI_DEV_INFO_BUFFER_LENGTH - count,
|
||||||
|
" qd=%-6d", device->queue_depth);
|
||||||
|
}
|
||||||
|
|
||||||
|
dev_info(&ctrl_info->pci_dev->dev, "%s %s\n", action, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Assumes the SCSI device list lock is held. */
|
/* Assumes the SCSI device list lock is held. */
|
||||||
|
@ -1638,14 +1680,14 @@ static void pqi_update_device_list(struct pqi_ctrl_info *ctrl_info,
|
||||||
/* Remove all devices that have gone away. */
|
/* Remove all devices that have gone away. */
|
||||||
list_for_each_entry_safe(device, next, &delete_list,
|
list_for_each_entry_safe(device, next, &delete_list,
|
||||||
delete_list_entry) {
|
delete_list_entry) {
|
||||||
if (device->sdev)
|
|
||||||
pqi_remove_device(ctrl_info, device);
|
|
||||||
if (device->volume_offline) {
|
if (device->volume_offline) {
|
||||||
pqi_dev_info(ctrl_info, "offline", device);
|
pqi_dev_info(ctrl_info, "offline", device);
|
||||||
pqi_show_volume_status(ctrl_info, device);
|
pqi_show_volume_status(ctrl_info, device);
|
||||||
} else {
|
} else {
|
||||||
pqi_dev_info(ctrl_info, "removed", device);
|
pqi_dev_info(ctrl_info, "removed", device);
|
||||||
}
|
}
|
||||||
|
if (device->sdev)
|
||||||
|
pqi_remove_device(ctrl_info, device);
|
||||||
list_del(&device->delete_list_entry);
|
list_del(&device->delete_list_entry);
|
||||||
pqi_free_device(device);
|
pqi_free_device(device);
|
||||||
}
|
}
|
||||||
|
@ -1667,6 +1709,7 @@ static void pqi_update_device_list(struct pqi_ctrl_info *ctrl_info,
|
||||||
/* Expose any new devices. */
|
/* Expose any new devices. */
|
||||||
list_for_each_entry_safe(device, next, &add_list, add_list_entry) {
|
list_for_each_entry_safe(device, next, &add_list, add_list_entry) {
|
||||||
if (!device->sdev) {
|
if (!device->sdev) {
|
||||||
|
pqi_dev_info(ctrl_info, "added", device);
|
||||||
rc = pqi_add_device(ctrl_info, device);
|
rc = pqi_add_device(ctrl_info, device);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
dev_warn(&ctrl_info->pci_dev->dev,
|
dev_warn(&ctrl_info->pci_dev->dev,
|
||||||
|
@ -1675,10 +1718,8 @@ static void pqi_update_device_list(struct pqi_ctrl_info *ctrl_info,
|
||||||
device->bus, device->target,
|
device->bus, device->target,
|
||||||
device->lun);
|
device->lun);
|
||||||
pqi_fixup_botched_add(ctrl_info, device);
|
pqi_fixup_botched_add(ctrl_info, device);
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pqi_dev_info(ctrl_info, "added", device);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1738,7 +1779,7 @@ static int pqi_update_scsi_devices(struct pqi_ctrl_info *ctrl_info)
|
||||||
bool is_physical_device;
|
bool is_physical_device;
|
||||||
u8 *scsi3addr;
|
u8 *scsi3addr;
|
||||||
static char *out_of_memory_msg =
|
static char *out_of_memory_msg =
|
||||||
"out of memory, device discovery stopped";
|
"failed to allocate memory, device discovery stopped";
|
||||||
|
|
||||||
INIT_LIST_HEAD(&new_device_list_head);
|
INIT_LIST_HEAD(&new_device_list_head);
|
||||||
|
|
||||||
|
@ -1839,9 +1880,16 @@ static int pqi_update_scsi_devices(struct pqi_ctrl_info *ctrl_info)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
if (rc) {
|
if (rc) {
|
||||||
|
if (device->is_physical_device)
|
||||||
dev_warn(&ctrl_info->pci_dev->dev,
|
dev_warn(&ctrl_info->pci_dev->dev,
|
||||||
"obtaining device info failed, skipping device %016llx\n",
|
"obtaining device info failed, skipping physical device %016llx\n",
|
||||||
get_unaligned_be64(device->scsi3addr));
|
get_unaligned_be64(
|
||||||
|
&phys_lun_ext_entry->wwid));
|
||||||
|
else
|
||||||
|
dev_warn(&ctrl_info->pci_dev->dev,
|
||||||
|
"obtaining device info failed, skipping logical device %08x%08x\n",
|
||||||
|
*((u32 *)&device->scsi3addr),
|
||||||
|
*((u32 *)&device->scsi3addr[4]));
|
||||||
rc = 0;
|
rc = 0;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue