[ofa-general] [RFC,PATCH 00/20] svc: Server Side Transport Switch
Tom Tucker
tom at opengridcomputing.com
Mon Aug 20 11:53:51 PDT 2007
This patchest modifies the RPC server side implementation
to support pluggable transports. This was done in order to allow
RPC applications (NFS) to run over RDMA transports like IB and iWARP.
This patchset was also published to nfs at lists.sourceforge.net.
This patchset represents an update to the previously published
version. The most significant changes are a renaming of the
transport switch data structures and functions based on a
recommendation from Chuck Lever. Code cleanup was also done in the
portlist implementation based on feedback from Trond.
I've included the original description below for new reviewers.
This patchset implements a sunrpc server side pluggable transport
switch that supports dynamically registered transports.
The knfsd daemon has been modified to allow user-mode programs
to add a new listening endpoint by writing a string
to the portlist file. The format of the string is as follows:
<transport-name> <port>
For example,
# echo rdma 2050 > /proc/fs/nfsd/portlist
Will cause the knfsd daemon to attempt to add a listening endpoint on
port 2050 using the 'rdma' transport.
Transports register themselves with the transport switch using a
new API that has the following synopsis:
void svc_register_transport(struct svc_sock_ops *xprt)
The text transport name is contained in a field in the xprt structure.
A new service has been added as well to take a transport name
instead of an IP protocol number to specify the transport on which the
listening endpoint is to be created. This function is defined as follows:
int svc_create_svcsock(struct svc_serv, char *transport_name,
unsigned short port, int flags);
The existing svc_makesock interface was left to avoid impacts to existing
servers. It has been modified to map IP protocol numbers to transport
strings.
--
Signed-off-by: Tom Tucker <tom at opengridcomputing.com>
More information about the general
mailing list