Commit cce63cd6 authored by Chuck Lever's avatar Chuck Lever Committed by Trond Myklebust
Browse files

SUNRPC: Rename rpcb_getport_external routine



In preparation for handling NFS mount option parsing in the kernel,
rename rpcb_getport_external as rpcb_get_port_sync, and make it available
always (instead of only when CONFIG_ROOT_NFS is enabled).

Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent f7fb558e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -428,7 +428,7 @@ static int __init root_nfs_getport(int program, int version, int proto)
	printk(KERN_NOTICE "Looking up port of RPC %d/%d on %u.%u.%u.%u\n",
		program, version, NIPQUAD(servaddr));
	set_sockaddr(&sin, servaddr, 0);
	return rpcb_getport_external(&sin, program, version, proto);
	return rpcb_getport_sync(&sin, program, version, proto);
}


+2 −5
Original line number Diff line number Diff line
@@ -120,8 +120,10 @@ struct rpc_clnt *rpc_bind_new_program(struct rpc_clnt *,
struct rpc_clnt *rpc_clone_client(struct rpc_clnt *);
void		rpc_shutdown_client(struct rpc_clnt *);
void		rpc_release_client(struct rpc_clnt *);

int		rpcb_register(u32, u32, int, unsigned short, int *);
void		rpcb_getport(struct rpc_task *);
int		rpcb_getport_sync(struct sockaddr_in *, __u32, __u32, int);

void		rpc_call_setup(struct rpc_task *, struct rpc_message *, int);

@@ -141,10 +143,5 @@ void rpc_force_rebind(struct rpc_clnt *);
size_t		rpc_peeraddr(struct rpc_clnt *, struct sockaddr *, size_t);
char *		rpc_peeraddr2str(struct rpc_clnt *, enum rpc_display_format_t);

/*
 * Helper function for NFSroot support
 */
int		rpcb_getport_external(struct sockaddr_in *, __u32, __u32, int);

#endif /* __KERNEL__ */
#endif /* _LINUX_SUNRPC_CLNT_H */
+11 −10
Original line number Diff line number Diff line
@@ -12,6 +12,8 @@
 *  Copyright (C) 1996, Olaf Kirch <okir@monad.swb.de>
 */

#include <linux/module.h>

#include <linux/types.h>
#include <linux/socket.h>
#include <linux/kernel.h>
@@ -247,20 +249,19 @@ int rpcb_register(u32 prog, u32 vers, int prot, unsigned short port, int *okay)
	return error;
}

#ifdef CONFIG_ROOT_NFS
/**
 * rpcb_getport_external - obtain the port for an RPC service on a given host
 * rpcb_getport_sync - obtain the port for an RPC service on a given host
 * @sin: address of remote peer
 * @prog: RPC program number to bind
 * @vers: RPC version number to bind
 * @prot: transport protocol to use to make this request
 *
 * Called from outside the RPC client in a synchronous task context.
 * Uses default timeout parameters specified by underlying transport.
 *
 * For now, this supports only version 2 queries, but is used only by
 * mount_clnt for NFS_ROOT.
 * XXX: Needs to support IPv6, and rpcbind versions 3 and 4
 */
int rpcb_getport_external(struct sockaddr_in *sin, __u32 prog,
int rpcb_getport_sync(struct sockaddr_in *sin, __u32 prog,
		      __u32 vers, int prot)
{
	struct rpcbind_args map = {
@@ -278,10 +279,10 @@ int rpcb_getport_external(struct sockaddr_in *sin, __u32 prog,
	char hostname[40];
	int status;

	dprintk("RPC:       rpcb_getport_external(%u.%u.%u.%u, %u, %u, %d)\n",
			NIPQUAD(sin->sin_addr.s_addr), prog, vers, prot);
	dprintk("RPC:       %s(" NIPQUAD_FMT ", %u, %u, %d)\n",
		__FUNCTION__, NIPQUAD(sin->sin_addr.s_addr), prog, vers, prot);

	sprintf(hostname, "%u.%u.%u.%u", NIPQUAD(sin->sin_addr.s_addr));
	sprintf(hostname, NIPQUAD_FMT, NIPQUAD(sin->sin_addr.s_addr));
	rpcb_clnt = rpcb_create(hostname, (struct sockaddr *)sin, prot, 2, 0);
	if (IS_ERR(rpcb_clnt))
		return PTR_ERR(rpcb_clnt);
@@ -296,7 +297,7 @@ int rpcb_getport_external(struct sockaddr_in *sin, __u32 prog,
	}
	return status;
}
#endif
EXPORT_SYMBOL_GPL(rpcb_getport_sync);

/**
 * rpcb_getport - obtain the port for a given RPC service on a given host