Message ID | 20210802090232.1166195-8-damien.lemoal@wdc.com |
---|---|
State | New |
Headers | show |
Series | libata cleanups and improvements | expand |
On 8/2/21 2:02 AM, Damien Le Moal wrote: > +/** > + * sas_ncq_prio_supported_show - Indicate if device supports NCQ priority > + * @dev: pointer to embedded device > + * @attr: sas_ncq_prio_supported attribute desciptor > + * @buf: the buffer returned > + * > + * A sysfs 'read/write' sdev attribute, only works with SATA > + */ > +static ssize_t > +sas_ncq_prio_supported_show(struct device *dev, > + struct device_attribute *attr, char *buf) > +{ > + struct scsi_device *sdev = to_scsi_device(dev); > + > + return snprintf(buf, PAGE_SIZE, "%d\n", > + scsih_ncq_prio_supp(sdev)); > +} > +static DEVICE_ATTR_RO(sas_ncq_prio_supported); Since this is new code, how about using sysfs_emit() instead of snprintf()? Thanks, Bart.
On 2021/08/03 1:00, Bart Van Assche wrote: > On 8/2/21 2:02 AM, Damien Le Moal wrote: >> +/** >> + * sas_ncq_prio_supported_show - Indicate if device supports NCQ priority >> + * @dev: pointer to embedded device >> + * @attr: sas_ncq_prio_supported attribute desciptor >> + * @buf: the buffer returned >> + * >> + * A sysfs 'read/write' sdev attribute, only works with SATA >> + */ >> +static ssize_t >> +sas_ncq_prio_supported_show(struct device *dev, >> + struct device_attribute *attr, char *buf) >> +{ >> + struct scsi_device *sdev = to_scsi_device(dev); >> + >> + return snprintf(buf, PAGE_SIZE, "%d\n", >> + scsih_ncq_prio_supp(sdev)); >> +} >> +static DEVICE_ATTR_RO(sas_ncq_prio_supported); > > Since this is new code, how about using sysfs_emit() instead of snprintf()? OK. Will do. > > Thanks, > > Bart. >
On 02/08/2021 11:03, Damien Le Moal wrote: > +/** > + * sas_ncq_prio_supported_show - Indicate if device supports NCQ priority > + * @dev: pointer to embedded device > + * @attr: sas_ncq_prio_supported attribute desciptor > + * @buf: the buffer returned > + * > + * A sysfs 'read/write' sdev attribute, only works with SATA > + */ [...] > +static DEVICE_ATTR_RO(sas_ncq_prio_supported); > + Shouldn't that comment read: "A sysfs 'read only' sdev attribute, only works with SATA"
On 2021/08/03 16:55, Johannes Thumshirn wrote: > On 02/08/2021 11:03, Damien Le Moal wrote: >> +/** >> + * sas_ncq_prio_supported_show - Indicate if device supports NCQ priority >> + * @dev: pointer to embedded device >> + * @attr: sas_ncq_prio_supported attribute desciptor >> + * @buf: the buffer returned >> + * >> + * A sysfs 'read/write' sdev attribute, only works with SATA >> + */ > > [...] > >> +static DEVICE_ATTR_RO(sas_ncq_prio_supported); >> + > > Shouldn't that comment read: > "A sysfs 'read only' sdev attribute, only works with SATA" Oops. Indeed it should :)
diff --git a/drivers/scsi/mpt3sas/mpt3sas_ctl.c b/drivers/scsi/mpt3sas/mpt3sas_ctl.c index b66140e4c370..7bce8288fb4f 100644 --- a/drivers/scsi/mpt3sas/mpt3sas_ctl.c +++ b/drivers/scsi/mpt3sas/mpt3sas_ctl.c @@ -3918,6 +3918,25 @@ sas_device_handle_show(struct device *dev, struct device_attribute *attr, } static DEVICE_ATTR_RO(sas_device_handle); +/** + * sas_ncq_prio_supported_show - Indicate if device supports NCQ priority + * @dev: pointer to embedded device + * @attr: sas_ncq_prio_supported attribute desciptor + * @buf: the buffer returned + * + * A sysfs 'read/write' sdev attribute, only works with SATA + */ +static ssize_t +sas_ncq_prio_supported_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct scsi_device *sdev = to_scsi_device(dev); + + return snprintf(buf, PAGE_SIZE, "%d\n", + scsih_ncq_prio_supp(sdev)); +} +static DEVICE_ATTR_RO(sas_ncq_prio_supported); + /** * sas_ncq_prio_enable_show - send prioritized io commands to device * @dev: pointer to embedded device @@ -3960,6 +3979,7 @@ static DEVICE_ATTR_RW(sas_ncq_prio_enable); struct device_attribute *mpt3sas_dev_attrs[] = { &dev_attr_sas_address, &dev_attr_sas_device_handle, + &dev_attr_sas_ncq_prio_supported, &dev_attr_sas_ncq_prio_enable, NULL, };
Similarly to AHCI, introduce the device sysfs attribute sas_ncq_prio_supported to advertize if a SATA device supports the NCQ priority feature. Without this new attribute, the user can only discover if a SATA device supports NCQ priority by trying to enable the feature use with the sas_ncq_prio_enable sysfs device attribute, which fails when the device does not support high priroity commands. Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com> --- drivers/scsi/mpt3sas/mpt3sas_ctl.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)