scsi: mpt3sas: Recognize and act on iopriority info
This patch adds support for request iopriority handling in the mpt3sas layer. This works only when a ATA device is behind the SATL. The ATA device also has to indicate that it supports command priorities in the identify information that is pulled from the SATL. Signed-off-by: Adam Manzanares <adam.manzanares@wdc.com> Acked-by: Sreekanth Reddy <Sreekanth.Reddy@broadcom.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:

committed by
Martin K. Petersen

parent
093df73771
commit
307d9075a0
@@ -3325,8 +3325,6 @@ static DEVICE_ATTR(diag_trigger_mpi, S_IRUGO | S_IWUSR,
|
||||
|
||||
/*********** diagnostic trigger suppport *** END ****************************/
|
||||
|
||||
|
||||
|
||||
/*****************************************/
|
||||
|
||||
struct device_attribute *mpt3sas_host_attrs[] = {
|
||||
@@ -3402,9 +3400,50 @@ _ctl_device_handle_show(struct device *dev, struct device_attribute *attr,
|
||||
}
|
||||
static DEVICE_ATTR(sas_device_handle, S_IRUGO, _ctl_device_handle_show, NULL);
|
||||
|
||||
/**
|
||||
* _ctl_device_ncq_io_prio_show - send prioritized io commands to device
|
||||
* @dev - pointer to embedded device
|
||||
* @buf - the buffer returned
|
||||
*
|
||||
* A sysfs 'read/write' sdev attribute, only works with SATA
|
||||
*/
|
||||
static ssize_t
|
||||
_ctl_device_ncq_prio_enable_show(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct scsi_device *sdev = to_scsi_device(dev);
|
||||
struct MPT3SAS_DEVICE *sas_device_priv_data = sdev->hostdata;
|
||||
|
||||
return snprintf(buf, PAGE_SIZE, "%d\n",
|
||||
sas_device_priv_data->ncq_prio_enable);
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
_ctl_device_ncq_prio_enable_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct scsi_device *sdev = to_scsi_device(dev);
|
||||
struct MPT3SAS_DEVICE *sas_device_priv_data = sdev->hostdata;
|
||||
bool ncq_prio_enable = 0;
|
||||
|
||||
if (kstrtobool(buf, &ncq_prio_enable))
|
||||
return -EINVAL;
|
||||
|
||||
if (!scsih_ncq_prio_supp(sdev))
|
||||
return -EINVAL;
|
||||
|
||||
sas_device_priv_data->ncq_prio_enable = ncq_prio_enable;
|
||||
return strlen(buf);
|
||||
}
|
||||
static DEVICE_ATTR(sas_ncq_prio_enable, S_IRUGO | S_IWUSR,
|
||||
_ctl_device_ncq_prio_enable_show,
|
||||
_ctl_device_ncq_prio_enable_store);
|
||||
|
||||
struct device_attribute *mpt3sas_dev_attrs[] = {
|
||||
&dev_attr_sas_address,
|
||||
&dev_attr_sas_device_handle,
|
||||
&dev_attr_sas_ncq_prio_enable,
|
||||
NULL,
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user