[PATCH 2/2] nvme: Expose cntrltype and dctype through sysfs.
Belanger, Martin
Martin.Belanger at dell.com
Thu Feb 3 05:08:03 PST 2022
> On 2/3/22 12:59, Belanger, Martin wrote:
> >> On 2/2/22 22:34, Martin Belanger wrote:
> >>> From: Martin Belanger <martin.belanger at dell.com>
> >>>
> >>> TP8010 introduces the Discovery Controller Type (dctype) attribute.
> >>> The dctype is returned in the response to the Identify command. This
> >>> patch exposes the dctype through the sysfs. Since the dctype depends
> >>> on the Controller Type (cntrltype), another attribute of the
> >>> Identify response, the patch also exposes the cntrltype as well.
> >>>
> >>> Signed-off-by: Martin Belanger <martin.belanger at dell.com>
> >>> ---
> >>> drivers/nvme/host/core.c | 35
> >> +++++++++++++++++++++++++++++++++++
> >>> drivers/nvme/host/nvme.h | 3 +++
> >>> include/linux/nvme.h | 10 +++++++++-
> >>> 3 files changed, 47 insertions(+), 1 deletion(-)
> >>>
> >>> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
> >>> index
> >>> 872c389dc6d3..c65d44fb65c4 100644
> >>> --- a/drivers/nvme/host/core.c
> >>> +++ b/drivers/nvme/host/core.c
> >>> @@ -2992,6 +2992,9 @@ static int nvme_init_identify(struct nvme_ctrl
> >> *ctrl)
> >>> ctrl->max_namespaces = le32_to_cpu(id->mnan);
> >>> ctrl->ctratt = le32_to_cpu(id->ctratt);
> >>>
> >>> + ctrl->cntrltype = id->cntrltype;
> >>> + ctrl->dctype = id->dctype;
> >>> +
> >>> if (id->rtd3e) {
> >>> /* us -> s */
> >>> u32 transition_time = le32_to_cpu(id->rtd3e) /
> >> USEC_PER_SEC; @@
> >>> -3525,6 +3528,34 @@ static ssize_t
> >> nvme_ctrl_fast_io_fail_tmo_store(struct device *dev,
> >>> static DEVICE_ATTR(fast_io_fail_tmo, S_IRUGO | S_IWUSR,
> >>> nvme_ctrl_fast_io_fail_tmo_show,
> >> nvme_ctrl_fast_io_fail_tmo_store);
> >>>
> >>> +static ssize_t nvme_ctrl_cntrltype_show(struct device *dev,
> >>> + struct device_attribute *attr, char *buf) {
> >>> + struct nvme_ctrl *ctrl = dev_get_drvdata(dev);
> >>> +
> >>> + switch (ctrl->cntrltype) {
> >>> + case NVME_CTRL_IO: return sysfs_emit(buf, "io\n");
> >>> + case NVME_CTRL_DISC: return sysfs_emit(buf, "disc\n");
> >>
> >> 'discovery', please. 'disc' is misleading here.
> >>
> >>> + case NVME_CTRL_ADMIN: return sysfs_emit(buf, "admin\n");
> >>> + default: return sysfs_emit(buf, "reserved\n");
> >>> + }
> >>> +}
> >>> +static DEVICE_ATTR(cntrltype, S_IRUGO, nvme_ctrl_cntrltype_show,
> >>> +NULL);
> >>> +
> >>> +static ssize_t nvme_ctrl_dctype_show(struct device *dev,
> >>> + struct device_attribute *attr, char *buf) {
> >>> + struct nvme_ctrl *ctrl = dev_get_drvdata(dev);
> >>> +
> >>> + switch (ctrl->dctype) {
> >>> + case NVME_DCTYPE_NOT_REPORTED: return sysfs_emit(buf,
> >> "nr\n");
> >>
> >> Please use 'none' here; 'nr' is ambiguous ('Number'?)
> >
> > Thanks for the review. I will apply the changes.
> >
> > Question: Since this was part of a set of patches, do I need to
> > resubmit the whole set or can I just resubmit this one patch?
> >
> Whole series, please. And gather up the reviews when resubmitting.
>
> > Also, Sagi mentioned that the dctype should only be exposed for
> > Discovery Controllers, which makes sense. However, I found that when
> > nvme_dev_attrs_are_visible() is invoked the ctrl object is not fully
> > configured yet (i.e. the controller is not yet identified).
> > Is there any other way to determine the controller type prior to
> > receiving the response to the Identify command?
> >
> Nope, unfortunately.
>
> But maybe we can lump both attributes together in to a single ctrltype; then
> we would have 'io', 'admin', 'discovery', 'discovery-cdc', and 'discovery-ddc'.
>
> Hmm?
I like that. I shall combine them into a single attribute.
Thanks,
Martin
>
> Cheers,
>
> Hannes
> --
> Dr. Hannes Reinecke Kernel Storage Architect
> hare at suse.de +49 911 74053 688
> SUSE Software Solutions Germany GmbH, Maxfeldstr. 5, 90409 Nürnberg
> HRB 36809 (AG Nürnberg), GF: Felix Imendörffer
Internal Use - Confidential
More information about the Linux-nvme
mailing list