mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
nvmet: add 'host_traddr' callback for debugfs
We want to display the transport address of the connected host in debugfs, but this is a property of the transport. So add a callback 'host_traddr' to allow the transport drivers to fill in the data. Signed-off-by: Hannes Reinecke <hare@kernel.org> Reviewed-by: Sagi Grimberg <sagi@grimberg.me> Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com> Signed-off-by: Daniel Wagner <dwagner@suse.de> Signed-off-by: Keith Busch <kbusch@kernel.org>
This commit is contained in:
parent
649fd41420
commit
7e5c3de3f2
|
|
@ -1542,6 +1542,14 @@ void nvmet_ctrl_fatal_error(struct nvmet_ctrl *ctrl)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(nvmet_ctrl_fatal_error);
|
EXPORT_SYMBOL_GPL(nvmet_ctrl_fatal_error);
|
||||||
|
|
||||||
|
ssize_t nvmet_ctrl_host_traddr(struct nvmet_ctrl *ctrl,
|
||||||
|
char *traddr, size_t traddr_len)
|
||||||
|
{
|
||||||
|
if (!ctrl->ops->host_traddr)
|
||||||
|
return -EOPNOTSUPP;
|
||||||
|
return ctrl->ops->host_traddr(ctrl, traddr, traddr_len);
|
||||||
|
}
|
||||||
|
|
||||||
static struct nvmet_subsys *nvmet_find_get_subsys(struct nvmet_port *port,
|
static struct nvmet_subsys *nvmet_find_get_subsys(struct nvmet_port *port,
|
||||||
const char *subsysnqn)
|
const char *subsysnqn)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -115,6 +115,23 @@ static ssize_t nvmet_ctrl_state_write(struct file *file, const char __user *buf,
|
||||||
}
|
}
|
||||||
NVMET_DEBUGFS_RW_ATTR(nvmet_ctrl_state);
|
NVMET_DEBUGFS_RW_ATTR(nvmet_ctrl_state);
|
||||||
|
|
||||||
|
static int nvmet_ctrl_host_traddr_show(struct seq_file *m, void *p)
|
||||||
|
{
|
||||||
|
struct nvmet_ctrl *ctrl = m->private;
|
||||||
|
ssize_t size;
|
||||||
|
char buf[NVMF_TRADDR_SIZE + 1];
|
||||||
|
|
||||||
|
size = nvmet_ctrl_host_traddr(ctrl, buf, NVMF_TRADDR_SIZE);
|
||||||
|
if (size < 0) {
|
||||||
|
buf[0] = '\0';
|
||||||
|
size = 0;
|
||||||
|
}
|
||||||
|
buf[size] = '\0';
|
||||||
|
seq_printf(m, "%s\n", buf);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
NVMET_DEBUGFS_ATTR(nvmet_ctrl_host_traddr);
|
||||||
|
|
||||||
int nvmet_debugfs_ctrl_setup(struct nvmet_ctrl *ctrl)
|
int nvmet_debugfs_ctrl_setup(struct nvmet_ctrl *ctrl)
|
||||||
{
|
{
|
||||||
char name[32];
|
char name[32];
|
||||||
|
|
@ -138,6 +155,8 @@ int nvmet_debugfs_ctrl_setup(struct nvmet_ctrl *ctrl)
|
||||||
&nvmet_ctrl_kato_fops);
|
&nvmet_ctrl_kato_fops);
|
||||||
debugfs_create_file("state", S_IRUSR | S_IWUSR, ctrl->debugfs_dir, ctrl,
|
debugfs_create_file("state", S_IRUSR | S_IWUSR, ctrl->debugfs_dir, ctrl,
|
||||||
&nvmet_ctrl_state_fops);
|
&nvmet_ctrl_state_fops);
|
||||||
|
debugfs_create_file("host_traddr", S_IRUSR, ctrl->debugfs_dir, ctrl,
|
||||||
|
&nvmet_ctrl_host_traddr_fops);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -354,6 +354,8 @@ struct nvmet_fabrics_ops {
|
||||||
void (*delete_ctrl)(struct nvmet_ctrl *ctrl);
|
void (*delete_ctrl)(struct nvmet_ctrl *ctrl);
|
||||||
void (*disc_traddr)(struct nvmet_req *req,
|
void (*disc_traddr)(struct nvmet_req *req,
|
||||||
struct nvmet_port *port, char *traddr);
|
struct nvmet_port *port, char *traddr);
|
||||||
|
ssize_t (*host_traddr)(struct nvmet_ctrl *ctrl,
|
||||||
|
char *traddr, size_t traddr_len);
|
||||||
u16 (*install_queue)(struct nvmet_sq *nvme_sq);
|
u16 (*install_queue)(struct nvmet_sq *nvme_sq);
|
||||||
void (*discovery_chg)(struct nvmet_port *port);
|
void (*discovery_chg)(struct nvmet_port *port);
|
||||||
u8 (*get_mdts)(const struct nvmet_ctrl *ctrl);
|
u8 (*get_mdts)(const struct nvmet_ctrl *ctrl);
|
||||||
|
|
@ -502,6 +504,8 @@ struct nvmet_ctrl *nvmet_ctrl_find_get(const char *subsysnqn,
|
||||||
struct nvmet_req *req);
|
struct nvmet_req *req);
|
||||||
void nvmet_ctrl_put(struct nvmet_ctrl *ctrl);
|
void nvmet_ctrl_put(struct nvmet_ctrl *ctrl);
|
||||||
u16 nvmet_check_ctrl_status(struct nvmet_req *req);
|
u16 nvmet_check_ctrl_status(struct nvmet_req *req);
|
||||||
|
ssize_t nvmet_ctrl_host_traddr(struct nvmet_ctrl *ctrl,
|
||||||
|
char *traddr, size_t traddr_len);
|
||||||
|
|
||||||
struct nvmet_subsys *nvmet_subsys_alloc(const char *subsysnqn,
|
struct nvmet_subsys *nvmet_subsys_alloc(const char *subsysnqn,
|
||||||
enum nvme_subsys_type type);
|
enum nvme_subsys_type type);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user