Re: [v2] net/ceph/messenger: support IPv6 Link-Local with scope identifier

Alex Markuze <[email protected]> Mon, 6 Jul 2026 16:18:11 +0000
Newsgroups org.kernel.vger.ceph-devel
Message-ID <[email protected]>
Hi Max,

NACK for now. Thanks for the patch, but I have some concerns
that need a v2:

  1. [critical] net/ceph/messenger.c:1241: IPv4 addresses with explicit ports no longer parse correctly
     `ceph_pton()` now sets `*ipend = str + len`, where `len` extends to
     the list delimiter (comma/end-of-string). For
     `10.0.0.1:7001,10.0.0.2:7001`, `ipend` lands on the comma, not the
     colon. The caller `ceph_parse_ips()` (line 1350) checks `*ipend ==
     ':'` to find the port — it never will. Depending on how
     `inet_pton_with_scope()` handles the trailing `:7001` in the
     address string, this either silently defaults every monitor to
     `CEPH_MON_PORT` or fails the parse entirely. Either way, existing
     mount strings with explicit ports regress.
     Suggested fix: Split the address from the port before passing to
     `inet_pton_with_scope()`, or set `*ipend` to where the address
     portion actually ends (before the colon) so the caller's
     port-parsing logic still works.
  2. [major] net/ceph/messenger.c:1241: init_net instead of caller's network namespace
     The patch passes `&init_net` to `inet_pton_with_scope()`. The rest
     of the file uses the caller's namespace: `ceph_messenger_init()`
     saves `current->nsproxy->net_ns` into `msgr->net` (line 1695),
     `sock_create_kern()` uses `read_pnet(&con->msgr->net)` (line 448),
     and `dns_query()` uses `current->nsproxy->net_ns` (line 1271).
     Resolving `%eth0` scope identifiers against `init_net` will
     silently break in containers where the interface only exists in the
     container's namespace — exactly where link-local addresses are most
     commonly used.
     Suggested fix: Use `current->nsproxy->net_ns` instead of
     `&init_net`.
  3. [nit] net/ceph/messenger.c:1252: Spaces instead of tab indentation
     Line is indented with spaces instead of tabs. Kernel coding style
     requires tabs.
     Suggested fix: Replace the 4 spaces with a tab.

New ipend placement breaks IPv4 port parsing (regression); init_net wrong namespace for container use.


-- 
Alex Markuze