* [PATCH] nvme-tcp: look up host_iface in the current netns
@ 2026-07-26 2:46 Geliang Tang
2026-07-27 13:24 ` Hannes Reinecke
2026-08-10 18:56 ` Keith Busch
0 siblings, 2 replies; 3+ messages in thread
From: Geliang Tang @ 2026-07-26 2:46 UTC (permalink / raw)
To: Keith Busch, Jens Axboe, Christoph Hellwig, Sagi Grimberg,
Hannes Reinecke
Cc: Geliang Tang, linux-nvme
From: Geliang Tang <tanggeliang@kylinos.cn>
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 <tanggeliang@kylinos.cn>
---
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;
--
2.53.0
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH] nvme-tcp: look up host_iface in the current netns
2026-07-26 2:46 [PATCH] nvme-tcp: look up host_iface in the current netns Geliang Tang
@ 2026-07-27 13:24 ` Hannes Reinecke
2026-08-10 18:56 ` Keith Busch
1 sibling, 0 replies; 3+ messages in thread
From: Hannes Reinecke @ 2026-07-27 13:24 UTC (permalink / raw)
To: Geliang Tang, Keith Busch, Jens Axboe, Christoph Hellwig,
Sagi Grimberg
Cc: Geliang Tang, linux-nvme
On 7/26/26 4:46 AM, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
>
> 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 <tanggeliang@kylinos.cn>
> ---
> 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 <hare@kernel.org>
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
hare@suse.de +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
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH] nvme-tcp: look up host_iface in the current netns
2026-07-26 2:46 [PATCH] nvme-tcp: look up host_iface in the current netns Geliang Tang
2026-07-27 13:24 ` Hannes Reinecke
@ 2026-08-10 18:56 ` Keith Busch
1 sibling, 0 replies; 3+ messages in thread
From: Keith Busch @ 2026-08-10 18:56 UTC (permalink / raw)
To: Geliang Tang
Cc: Jens Axboe, Christoph Hellwig, Sagi Grimberg, Hannes Reinecke,
Geliang Tang, linux-nvme
On Sun, Jul 26, 2026 at 10:46:49AM +0800, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
>
> 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":
Thanks, applied to nvme-7.3.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-08-10 18:56 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-26 2:46 [PATCH] nvme-tcp: look up host_iface in the current netns Geliang Tang
2026-07-27 13:24 ` Hannes Reinecke
2026-08-10 18:56 ` Keith Busch
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.