[PATCH 2/2] nvme: Expose cntrltype and dctype through sysfs.
Sagi Grimberg
sagi at grimberg.me
Thu Feb 3 07:52:24 PST 2022
>> There is already an interface to update sysfs groups, so in theory
>> this should do the trick:
>> --
>> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
>> index c11cd3a814fd..d86828cf7720 100644
>> --- a/drivers/nvme/host/core.c
>> +++ b/drivers/nvme/host/core.c
>> @@ -3115,6 +3115,11 @@ int nvme_init_ctrl_finish(struct nvme_ctrl *ctrl)
>> return ret;
>> }
>>
>> + ret = sysfs_update_groups(&ctrl->device->kobj,
>> ctrl->device->groups);
>> + if (ret)
>> + return ret;
>> +
>> +
>
> I just tried this and it works.
Makes sense.
> Martin
>
>> ctrl->identified = true;
>>
>> return 0;
>> --
>>
>> But probably we want add a nicer interface like
>> --
>> diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
>> index c11cd3a814fd..8fb94cb15fb0 100644
>> --- a/drivers/nvme/host/core.c
>> +++ b/drivers/nvme/host/core.c
>> @@ -3115,6 +3115,11 @@ int nvme_init_ctrl_finish(struct nvme_ctrl *ctrl)
>> return ret;
>> }
>>
>> + ret = device_update_groups(&ctrl->device);
>> + if (ret)
>> + return ret;
>> +
>> +
>> ctrl->identified = true;
>>
>> return 0;
>> --
>>
>> Where device_update_groups would be something like:
>> --
>> int device_update_groups(struct device *dev)
>> {
>> struct class *class = dev->class;
>> const struct device_type *type = dev->type;
>> int error;
>>
>> if (class) {
>> error = device_update_groups(dev, class->dev_groups);
>> if (error)
>> return error;
>> }
>>
>> if (type) {
>> error = device_update_groups(dev, type->groups);
>> if (error)
>> goto err_remove_class_groups;
>> }
>>
>> error = device_update_groups(dev, dev->groups);
>> if (error)
>> goto err_remove_type_groups;
This last hunk should probably be:
return device_update_groups(dev, dev->groups);
>> }
>> EXPORT_SYMBOL_GPL(device_update_groups);
>> --
>
> Sagi, would you add this function to drivers/base/core.c?
> Martin
Yes. This would need some more eyeballs though, maybe this
should be extended to device_update_attrs?
More information about the Linux-nvme
mailing list