[RFC PATCH 2/2] nvme-core: use macro defination to define dev attr
Chaitanya Kulkarni
kch at nvidia.com
Thu Apr 27 01:02:07 PDT 2023
Insated of duplicating the code for dhchap_secret & dhchap_ctrl_secret,
define a macro to register device attribute to create device attribute
that will also define store and show helpers.
Signed-off-by: Chaitanya Kulkarni <kch at nvidia.com>
---
drivers/nvme/host/core.c | 71 +++++++++++++++-------------------------
1 file changed, 27 insertions(+), 44 deletions(-)
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index 171ae1f2197a..f619158ea2fc 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -3780,17 +3780,6 @@ static DEVICE_ATTR_RO(dctype);
#ifdef CONFIG_NVME_AUTH
-static ssize_t nvme_ctrl_dhchap_secret_show(struct device *dev,
- struct device_attribute *attr, char *buf)
-{
- struct nvme_ctrl *ctrl = dev_get_drvdata(dev);
- struct nvmf_ctrl_options *opts = ctrl->opts;
-
- if (!opts->dhchap_secret)
- return sysfs_emit(buf, "none\n");
- return sysfs_emit(buf, "%s\n", opts->dhchap_secret);
-}
-
static ssize_t nvme_dhchap_secret_store_common(struct nvme_ctrl *ctrl,
char **dhchap_secret, struct nvme_dhchap_key **orig_key,
const char *buf, size_t count)
@@ -3833,40 +3822,34 @@ static ssize_t nvme_dhchap_secret_store_common(struct nvme_ctrl *ctrl,
return count;
}
-static ssize_t nvme_ctrl_dhchap_secret_store(struct device *dev,
- struct device_attribute *attr, const char *buf, size_t count)
-{
- struct nvme_ctrl *ctrl = dev_get_drvdata(dev);
-
- return nvme_dhchap_secret_store_common(ctrl, &ctrl->opts->dhchap_secret,
- &ctrl->host_key, buf, count);
-}
-
-static DEVICE_ATTR(dhchap_secret, S_IRUGO | S_IWUSR,
- nvme_ctrl_dhchap_secret_show, nvme_ctrl_dhchap_secret_store);
-
-static ssize_t nvme_ctrl_dhchap_ctrl_secret_show(struct device *dev,
- struct device_attribute *attr, char *buf)
-{
- struct nvme_ctrl *ctrl = dev_get_drvdata(dev);
- struct nvmf_ctrl_options *opts = ctrl->opts;
-
- if (!opts->dhchap_ctrl_secret)
- return sysfs_emit(buf, "none\n");
- return sysfs_emit(buf, "%s\n", opts->dhchap_ctrl_secret);
-}
-
-static ssize_t nvme_ctrl_dhchap_ctrl_secret_store(struct device *dev,
- struct device_attribute *attr, const char *buf, size_t count)
-{
- struct nvme_ctrl *ctrl = dev_get_drvdata(dev);
+#define NVME_AUTH_DEVICE_ATTR(NAME) \
+static ssize_t nvme_ctrl_##NAME##_show(struct device *dev, \
+ struct device_attribute *attr, char *buf) \
+{ \
+ struct nvme_ctrl *ctrl = dev_get_drvdata(dev); \
+ struct nvmf_ctrl_options *opts = ctrl->opts; \
+ \
+ if (!opts->NAME) \
+ return sysfs_emit(buf, "none\n"); \
+ return sysfs_emit(buf, "%s\n", opts->NAME); \
+} \
+ \
+static ssize_t nvme_ctrl_##NAME##_store(struct device *dev, \
+ struct device_attribute *attr, const char *buf, \
+ size_t count) \
+{ \
+ struct nvme_ctrl *ctrl = dev_get_drvdata(dev); \
+ \
+ return nvme_dhchap_secret_store_common(ctrl, \
+ &ctrl->opts->NAME, \
+ &ctrl->host_key, buf, count); \
+} \
+ \
+static DEVICE_ATTR(NAME, S_IRUGO | S_IWUSR, \
+ nvme_ctrl_##NAME##_show, nvme_ctrl_##NAME##_store); \
- return nvme_dhchap_secret_store_common(ctrl,
- &ctrl->opts->dhchap_ctrl_secret, &ctrl->ctrl_key, buf,
- count);
-}
-static DEVICE_ATTR(dhchap_ctrl_secret, S_IRUGO | S_IWUSR,
- nvme_ctrl_dhchap_ctrl_secret_show, nvme_ctrl_dhchap_ctrl_secret_store);
+NVME_AUTH_DEVICE_ATTR(dhchap_secret);
+NVME_AUTH_DEVICE_ATTR(dhchap_ctrl_secret);
#endif
static struct attribute *nvme_dev_attrs[] = {
--
2.40.0
More information about the Linux-nvme
mailing list