Commit 45fb19f7 authored by Sagi Grimberg's avatar Sagi Grimberg Committed by Keith Busch
Browse files

nvme: expose hostid via sysfs for fabrics controllers



We allow userspace to connect with a custom hostid which is useful for
certain use-cases. However there is is no way to tell what is the hostid
used to connect to a given controller.

Expose this so userspace can correlate controllers based on hostid.

Signed-off-by: default avatarSagi Grimberg <sagi@grimberg.me>
Reviewed-by: default avatarChaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
parent 76171c6c
Loading
Loading
Loading
Loading
+13 −0
Original line number Original line Diff line number Diff line
@@ -3252,6 +3252,16 @@ static ssize_t nvme_sysfs_show_hostnqn(struct device *dev,
}
}
static DEVICE_ATTR(hostnqn, S_IRUGO, nvme_sysfs_show_hostnqn, NULL);
static DEVICE_ATTR(hostnqn, S_IRUGO, nvme_sysfs_show_hostnqn, NULL);


static ssize_t nvme_sysfs_show_hostid(struct device *dev,
					struct device_attribute *attr,
					char *buf)
{
	struct nvme_ctrl *ctrl = dev_get_drvdata(dev);

	return snprintf(buf, PAGE_SIZE, "%pU\n", &ctrl->opts->host->id);
}
static DEVICE_ATTR(hostid, S_IRUGO, nvme_sysfs_show_hostid, NULL);

static ssize_t nvme_sysfs_show_address(struct device *dev,
static ssize_t nvme_sysfs_show_address(struct device *dev,
					 struct device_attribute *attr,
					 struct device_attribute *attr,
					 char *buf)
					 char *buf)
@@ -3278,6 +3288,7 @@ static struct attribute *nvme_dev_attrs[] = {
	&dev_attr_queue_count.attr,
	&dev_attr_queue_count.attr,
	&dev_attr_sqsize.attr,
	&dev_attr_sqsize.attr,
	&dev_attr_hostnqn.attr,
	&dev_attr_hostnqn.attr,
	&dev_attr_hostid.attr,
	NULL
	NULL
};
};


@@ -3293,6 +3304,8 @@ static umode_t nvme_dev_attrs_are_visible(struct kobject *kobj,
		return 0;
		return 0;
	if (a == &dev_attr_hostnqn.attr && !ctrl->opts)
	if (a == &dev_attr_hostnqn.attr && !ctrl->opts)
		return 0;
		return 0;
	if (a == &dev_attr_hostid.attr && !ctrl->opts)
		return 0;


	return a->mode;
	return a->mode;
}
}