[RFC][PATCH] sunrpc: fix oops in rpc_create() when the mount namespace is unshared
Eric W. Biederman
ebiederm at xmission.com
Wed Sep 10 13:02:10 PDT 2008
"Chuck Lever" <chuck.lever at oracle.com> writes:
> That makes sense.
> This is likely coming from lockd_down(), and is almost certainly not
> coming from the same uts namespace as the lockd_up() that did the
> pmap_set, which was done by the first NFS mount done in the first uts
> namespace on the system. It's just something that the kernel has to
> do for maintenance.
> There is only one lockd() instance that is shared among all the uts
> namespaces, right? In this case, what is the correct utsname to use?
As a general rule I would say we should capture the uts instance
in locked_up(). And use the same instance in locked_down().
I'm not at all familiar with how locked interacts with nfs mounts
in a practical sense. Is there one locked instance (or at least context)
per nfs mount?
The way I would expect things to work is that when we mount an nfs filesystem
from an nfs server. We would create a locked context for that server, that
additional nfs mounts to the same nfs server could share.
The way I would expect nfs to interact with the namespaces is for the nfs
mount to capture the uts and network namespaces, and use them for all
transactions relating to the mount. In particular when creating
or a locked context the nfs mount would use the uts namespace and the
network namespace as discriminators to see if an existing locked context
is the same.
I don't think nfs has a 1-1 thread to context model which is where things
get really hazy for me.
The conservative play is to always force use of the initial namespace
and to deny creation of mounts that would use different namespaces. In part
because the initial version of the namespace always exists. Which means
as relates to Cedrics initial patch we would still need to know which
mounts should cause us to use a different uts namespace so we can deny
More information about the Containers