Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 20 Apr 2026 05:25:01 +0000
From:      bugzilla-noreply@freebsd.org
To:        net@FreeBSD.org
Subject:   [Bug 294501] Cannot Mount Jailed Kerberized NFSv4 Server Exports After Upgrade to 15.0
Message-ID:  <bug-294501-7501-PYIAiBG6KR@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-294501-7501@https.bugs.freebsd.org/bugzilla/>

index | next in thread | previous in thread | raw e-mail

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=294501

--- Comment #14 from Gleb Smirnoff <glebius@FreeBSD.org> ---
Thanks a lot for working on that, Rick! Where was it stuck and where further
did you get?

Sorry, I recalled my code and I'd probably withdraw my earlier advice on
looking at making RB_HEAD rpcnl_clients virtualized :( I should have recalled
the code better before making advices.

The way I initially designed it is the following. Since generic Netlink is
global, a kernel module (e.g. kgss) registers a global clnt_nl. The word
"client" is a bit misleading here, as it hints for "ehrm, this should be
virtualized". In reality this "client" is more like a "module", it creates
linkage between certain class of kernel clients and a certain class of userland
helpers.
Thus, the vnet context appears only RPC call level. So, all calls and all
replies for all vnets are routed through the same clnt_nl client instance.
That's why kgss registers itself at gss_load() globally. Then, when kgss
actually does a call, it does clnt_nl_call() in a proper vnet context and
clnt_nl_call() will broadcast the message only to the helpers in this vnet and
go to  sleep(9). A kgssd(8) jailed to the same vnet that did clnt_nl_call()
shall receive this message. Did you see that in your debugging? When kgssd(8)
sends reply on its Netlink socket it is processed again in the same vnet and
clnt_nl_reply() shall process it in the correct vnet (see CURVNET_ASSERT()
there). Searching through request queue it matches this vnet against request
vnet.
So, the krpc<->netlink gate is kind of transparent wrt VIMAGE. All you need to
do is to call clnt_nl_call in the right vnet.

-- 
You are receiving this mail because:
You are the assignee for the bug.

home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-294501-7501-PYIAiBG6KR>