On Wed, Aug 12, 2026, at 3:38 PM, Jeff Layton wrote:
On Tue, 2026-08-11 at 15:19 -0400, Chuck Lever wrote:
quoted
For an IPv4 listener, the port-zero callback falls back through
__svc_rpcb_register4() to rpcb_register(). PMAPPROC_UNSET ignores
its protocol argument, so unwinding a partially successful TCP
registration also removes the mappings for existing listeners on
other transports, I would think.
It might be that the best the kernel can do here is tear everything
down if one registration fails.
What I was thinking for NFSv2/3 was to just have the listener set
netlink call wait for registration to complete before returning to
userland. That would mean we'd have to block even longer to try and
unregister things if things fail.
Alternate proposal: let's just declare rpcbind reg errors to be non-
fatal: do a pr_warn() and just leave it up to the admin to sort it out
if that happens instead of trying to fail the startup.
The resulting situation for the server is no worse off (it's just
running instead of being down), and I move that we're better off
leaving it up to a human to clean up the mess instead of trying to fix
things up from the kernel.
I was thinking of this in terms of a declarative administrative UI:
If the kernel can't set the requested configuration, it should
fail back to the previous configuration. Maybe that's not possible.
On the other hand, what might be better is to handle the rpcbind
registration from user space instead of the kernel, after the
kernel listener is set up.
--
Chuck Lever