Commit 55b59293 authored by Trond Myklebust's avatar Trond Myklebust

NFSv4: Fix nfs4_init_uniform_client_string for net namespaces

Commit 6f2ea7f2 (NFS: Add nfs4_unique_id boot parameter) introduces a
boot parameter that allows client administrators to set a string
identifier for use by the EXCHANGE_ID and SETCLIENTID arguments in order
to make them more globally unique.

Unfortunately, that uniquifier is no longer globally unique in the presence
of net namespaces, since each container expects to be able to set up their
own lease when mounting a new NFSv4/4.1 partition.
The fix is to add back in the container-specific hostname in addition to
the unique id.

Cc: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 1771c577
...@@ -4662,10 +4662,14 @@ static unsigned int ...@@ -4662,10 +4662,14 @@ static unsigned int
nfs4_init_uniform_client_string(const struct nfs_client *clp, nfs4_init_uniform_client_string(const struct nfs_client *clp,
char *buf, size_t len) char *buf, size_t len)
{ {
char *nodename = clp->cl_rpcclient->cl_nodename; const char *nodename = clp->cl_rpcclient->cl_nodename;
if (nfs4_client_id_uniquifier[0] != '\0') if (nfs4_client_id_uniquifier[0] != '\0')
nodename = nfs4_client_id_uniquifier; return scnprintf(buf, len, "Linux NFSv%u.%u %s/%s",
clp->rpc_ops->version,
clp->cl_minorversion,
nfs4_client_id_uniquifier,
nodename);
return scnprintf(buf, len, "Linux NFSv%u.%u %s", return scnprintf(buf, len, "Linux NFSv%u.%u %s",
clp->rpc_ops->version, clp->cl_minorversion, clp->rpc_ops->version, clp->cl_minorversion,
nodename); nodename);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment