Re: [PATCH] nvme-tcp: look up host_iface in the current netns
Hannes Reinecke <[email protected]> Mon, 27 Jul 2026 15:24:17 +0200
| Newsgroups | org.infradead.lists.linux-nvme |
|---|---|
| Message-ID | <[email protected]> |
On 7/26/26 4:46 AM, Geliang Tang wrote: > From: Geliang Tang <[email protected]> > > nvme_tcp_alloc_ctrl() looks opts->host_iface up in &init_net, the boot-time > netns. When called from any other netns - e.g. the selftest's ns2, where > ns2eth1 actually lives - the lookup misses and the controller setup fails > with "invalid interface passed": > > nvmet: adding nsid 1 to subsystem nqn.2014-08.org.nvmexpress.mptcpdev > nvmet_tcp: enabling port 24660 (0.0.0.0:24099) > # nvme discover -a 10.1.1.1 --tos=0x10 --host-iface=ns2eth1 > nvme_tcp: invalid interface passed: ns2eth1 > # failed to add controller, error invalid interface > > Look the device up in current->nsproxy->net_ns instead so the check sees > the calling task's netns. > > Signed-off-by: Geliang Tang <[email protected]> > --- > drivers/nvme/host/tcp.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/nvme/host/tcp.c b/drivers/nvme/host/tcp.c > index ba5c7b3e2a7c..c89d84ccce1a 100644 > --- a/drivers/nvme/host/tcp.c > +++ b/drivers/nvme/host/tcp.c > @@ -2960,7 +2960,8 @@ static struct nvme_tcp_ctrl *nvme_tcp_alloc_ctrl(struct device *dev, > } > > if (opts->mask & NVMF_OPT_HOST_IFACE) { > - if (!__dev_get_by_name(&init_net, opts->host_iface)) { > + if (!__dev_get_by_name(current->nsproxy->net_ns, > + opts->host_iface)) { > pr_err("invalid interface passed: %s\n", > opts->host_iface); > ret = -ENODEV; Reviewed-by: Hannes Reinecke <[email protected]> But: if we are running in a network namespace the IP address of the ports in the discovery log page will be relative to that namespace, too, and there's a good chance that they are not reachable from the initiator reading the log page. Making the whole point of discovery a bit pointless. But I really don't have a good idea how to resolve that. Cheers, Hannes -- Dr. Hannes Reinecke Kernel Storage Architect [email protected] +49 911 74053 688 SUSE Software Solutions GmbH, Frankenstr. 146, 90461 Nürnberg HRB 36809 (AG Nürnberg), GF: I. Totev, A. McDonald, W. Knoblich