From dda3f5f1cb60b9c6d24ce858b9738c721c08e164 Mon Sep 17 00:00:00 2001 From: Chuck Lever Date: Thu, 1 Mar 2012 17:01:23 -0500 Subject: [PATCH] --- yaml --- r: 294513 b: refs/heads/master c: 31b8e2aec099f22d40277c424d8c24b2a4c95fce h: refs/heads/master i: 294511: da1523c11ca5d0cef0f14de12b338c89974463d4 v: v3 --- [refs] | 2 +- trunk/fs/nfs/client.c | 15 +++++++++++++++ trunk/fs/nfs/super.c | 6 ------ 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index 889261950a6b..11ad992cbab2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2e738fdce22f9a7edf20281fd2d768ef9785922e +refs/heads/master: 31b8e2aec099f22d40277c424d8c24b2a4c95fce diff --git a/trunk/fs/nfs/client.c b/trunk/fs/nfs/client.c index d038dc5916e5..d30dcbfb6b20 100644 --- a/trunk/fs/nfs/client.c +++ b/trunk/fs/nfs/client.c @@ -1346,6 +1346,7 @@ int nfs4_init_client(struct nfs_client *clp, rpc_authflavor_t authflavour, int noresvport) { + char buf[INET6_ADDRSTRLEN + 1]; int error; if (clp->cl_cons_state == NFS_CS_READY) { @@ -1361,6 +1362,20 @@ int nfs4_init_client(struct nfs_client *clp, 1, noresvport); if (error < 0) goto error; + + /* If no clientaddr= option was specified, find a usable cb address */ + if (ip_addr == NULL) { + struct sockaddr_storage cb_addr; + struct sockaddr *sap = (struct sockaddr *)&cb_addr; + + error = rpc_localaddr(clp->cl_rpcclient, sap, sizeof(cb_addr)); + if (error < 0) + goto error; + error = rpc_ntop(sap, buf, sizeof(buf)); + if (error < 0) + goto error; + ip_addr = (const char *)buf; + } strlcpy(clp->cl_ipaddr, ip_addr, sizeof(clp->cl_ipaddr)); error = nfs_idmap_new(clp); diff --git a/trunk/fs/nfs/super.c b/trunk/fs/nfs/super.c index 7002be11d99f..3935a371f5a0 100644 --- a/trunk/fs/nfs/super.c +++ b/trunk/fs/nfs/super.c @@ -2557,12 +2557,6 @@ static int nfs4_validate_text_mount_data(void *options, return -EINVAL; } - if (args->client_address == NULL) { - dfprintk(MOUNT, - "NFS4: mount program didn't pass callback address\n"); - return -EINVAL; - } - return nfs_parse_devname(dev_name, &args->nfs_server.hostname, NFS4_MAXNAMLEN,