]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
scsi: smartpqi: add raid level show
authorKevin Barnett <kevin.barnett@hpe.com>
Wed, 3 May 2017 23:55:31 +0000 (18:55 -0500)
committerChuck Anderson <chuck.anderson@oracle.com>
Wed, 26 Jul 2017 04:07:02 +0000 (21:07 -0700)
Orabug: 2619102126447813

Display the RAID level via sysfs

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>
(cherry picked from commit a9f93392415eb0fc86c29f015822b36016278c72)
Signed-off-by: Brian Maly <brian.maly@oracle.com>
drivers/scsi/smartpqi/smartpqi_init.c

index ee9ed536888e5442ef9cfd13524d46466fd2ac1e..80248293f92ddef3fc682aa974a9043a9052d7ce 100644 (file)
@@ -144,7 +144,7 @@ static char *pqi_raid_level_to_string(u8 raid_level)
        if (raid_level < ARRAY_SIZE(raid_levels))
                return raid_levels[raid_level];
 
-       return "";
+       return "RAID UNKNOWN";
 }
 
 #define SA_RAID_0              0
@@ -5789,13 +5789,41 @@ static ssize_t pqi_ssd_smart_path_enabled_show(struct device *dev,
        return 2;
 }
 
+static ssize_t pqi_raid_level_show(struct device *dev,
+       struct device_attribute *attr, char *buffer)
+{
+       struct pqi_ctrl_info *ctrl_info;
+       struct scsi_device *sdev;
+       struct pqi_scsi_dev *device;
+       unsigned long flags;
+       char *raid_level;
+
+       sdev = to_scsi_device(dev);
+       ctrl_info = shost_to_hba(sdev->host);
+
+       spin_lock_irqsave(&ctrl_info->scsi_device_list_lock, flags);
+
+       device = sdev->hostdata;
+
+       if (pqi_is_logical_device(device))
+               raid_level = pqi_raid_level_to_string(device->raid_level);
+       else
+               raid_level = "N/A";
+
+       spin_unlock_irqrestore(&ctrl_info->scsi_device_list_lock, flags);
+
+       return snprintf(buffer, PAGE_SIZE, "%s\n", raid_level);
+}
+
 static DEVICE_ATTR(sas_address, 0444, pqi_sas_address_show, NULL);
 static DEVICE_ATTR(ssd_smart_path_enabled, 0444,
        pqi_ssd_smart_path_enabled_show, NULL);
+static DEVICE_ATTR(raid_level, 0444, pqi_raid_level_show, NULL);
 
 static struct device_attribute *pqi_sdev_attrs[] = {
        &dev_attr_sas_address,
        &dev_attr_ssd_smart_path_enabled,
+       &dev_attr_raid_level,
        NULL
 };