From: Tom Tucker <tom@opengridcomputing.com>
To: Greg Banks <gnb@sgi.com>
Cc: neilb@suse.de, bfields@fieldses.org, nfs@lists.sourceforge.net
Subject: Re: [RFC, PATCH 13/35] svc: Change services to use new svc_create_xprt service
Date: Thu, 04 Oct 2007 09:27:11 -0500 [thread overview]
Message-ID: <1191508031.411.29.camel@trinity.ogc.int> (raw)
In-Reply-To: <20071004023531.GV21388@sgi.com>
On Thu, 2007-10-04 at 12:35 +1000, Greg Banks wrote:
> On Tue, Oct 02, 2007 at 11:44:50AM -0400, Chuck Lever wrote:
> > On Oct 1, 2007, at 3:27 PM, Tom Tucker wrote:
> > >
> > >-static int find_socket(struct svc_serv *serv, int proto)
> > >+static int find_xprt(struct svc_serv *serv, char *proto)
> > > {
> > > struct svc_sock *svsk;
> > > int found = 0;
> > > list_for_each_entry(svsk, &serv->sv_permsocks, sk_list)
> > >- if (svsk->sk_sk->sk_protocol == proto) {
> > >+ if (strcmp(svsk->sk_xprt.xpt_class->xcl_name, proto) == 0) {
> > > found = 1;
> > > break;
> > > }
> >
> > This is scary. :-)
> >
> > First, I think we would be better off making the server transport API
> > stronger by not allowing ULPs to dig around in svc_xprt or the
> > svc_xprt_class structures directly. Perhaps you could provide a
> > method for obtaining the transport's NETID.
>
> Or a function to do the match:
>
> struct svc_xprt_ops {
> ...
> int (*xpo_netid_supported)(const char *netid);
> ...
> };
>
> Or, your could push the find_xprt() function down into svc_xprt.c
> where such futzing belongs.
I think this is the correct approach, although the parameters of the
svc_find_xprt function may need some tweaking.
>
> > Second, is there any guarantee that the string name of the underlying
> > protocol
The transport string doesn't name a protocol, it names a transport
class. I'll check the code because I bet I've got a confused name or two
in the code.
The transport class identifies a provider that serves up the API we've
defined. To be painfully pedantic, the transport provider determines the
underlying protocol. Within a protocol family, the address family in the
sockaddr is used to further discriminate. So in the case of the "tcp"
transport class, the socket type (SOCK_STREAM), combined with the
address family (AF_INET/AF_INET6) in the provided sockaddr determines
the protocol (TCP/IPV4, or TCP/IPV6).
Along these lines, a reasonable argument could be made that the names of
the transport classes should be "sock_stream", and "sock_dgram", not
"tcp", and "udp".
> is the same as the name of the transport class? Is there
> > any relationship between the transport name and the NETIDs it supports?
>
I think trying to map the netid to a transport instance is a mistake.
The "transport" name here is above the network layer and maps more to an
API (socket, ofa rdma) than to a network protocol. "rdma" in this
context can mean iWARP, or IB, and iWARP can mean RDDP/TCP, RDDP/SCTP,
etc...
Given the current support, "rdma" can be over IB or RDDP/TCP. So, IMO:
rdma:AF_INET:0.0.0.0:2081
rdma:AF_INET6:ff.ff.ff.ff.10.10.0.5:2081
tcp:AF_INET:0.0.0.0:2049
etc, are strings that map a transport instance logically and uniquely.
If you always want to listen on zero, then you can get rid of the
address itself.
This approach also allows the transport to extend naturally to other
address families.
> This is already confused: our "tcp" transport supports both TCP/IPv4
> and TCP/IPv6, which are two separate netids "tcp4" and "tcp6" in
> TLI jargon.
>
> Greg.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
NFS maillist - NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs
next prev parent reply other threads:[~2007-10-04 14:28 UTC|newest]
Thread overview: 103+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-01 19:14 [RFC,PATCH 00/35] SVC Transport Switch Tom Tucker
2007-10-01 19:27 ` [RFC,PATCH 01/35] svc: Add an svc transport class Tom Tucker
2007-10-01 19:27 ` [RFC,PATCH 02/35] svc: Make svc_sock the tcp/udp transport Tom Tucker
2007-10-01 19:27 ` [RFC, PATCH 03/35] svc: Change the svc_sock in the rqstp structure to a transport Tom Tucker
2007-10-01 19:27 ` [RFC, PATCH 04/35] svc: Add a max payload value to the transport Tom Tucker
2007-10-02 14:54 ` Chuck Lever
2007-10-02 16:28 ` Tom Tucker
2007-10-03 11:09 ` Greg Banks
2007-10-03 14:26 ` Tom Tucker
2007-10-03 15:18 ` Chuck Lever
2007-10-04 1:10 ` Greg Banks
2007-10-01 19:27 ` [RFC, PATCH 05/35] svc: Move sk_sendto and sk_recvfrom to svc_xprt_class Tom Tucker
2007-10-02 15:04 ` Chuck Lever
2007-10-02 16:29 ` Tom Tucker
2007-10-02 16:57 ` Chuck Lever
2007-10-02 18:24 ` Tom Tucker
2007-10-02 18:30 ` Tom Tucker
2007-10-02 18:47 ` Chuck Lever
2007-10-02 19:55 ` Tom Tucker
2007-10-02 20:29 ` Chuck Lever
2007-10-02 20:35 ` Tom Tucker
2007-10-02 20:38 ` Tom Tucker
2007-10-04 1:34 ` Greg Banks
2007-10-04 1:21 ` Greg Banks
2007-10-03 11:13 ` Greg Banks
2007-10-01 19:27 ` [RFC, PATCH 06/35] svc: Add transport specific xpo_release function Tom Tucker
2007-10-02 15:18 ` Chuck Lever
2007-10-02 16:35 ` Tom Tucker
2007-10-04 1:48 ` Greg Banks
2007-10-01 19:27 ` [RFC,PATCH 07/35] svc: Add per-transport delete functions Tom Tucker
2007-10-01 19:27 ` [RFC,PATCH 08/35] svc: Add xpo_prep_reply_hdr Tom Tucker
2007-10-01 19:27 ` [RFC, PATCH 09/35] svc: Add a transport function that checks for write space Tom Tucker
2007-10-01 19:27 ` [RFC, PATCH 10/35] svc: Move close processing to a single place Tom Tucker
2007-10-01 19:27 ` [RFC,PATCH 11/35] svc: Add xpo_accept transport function Tom Tucker
2007-10-02 15:33 ` Chuck Lever
2007-10-02 16:41 ` Tom Tucker
2007-10-02 17:07 ` Chuck Lever
2007-10-02 18:28 ` Tom Tucker
2007-10-02 18:49 ` Chuck Lever
2007-10-04 1:54 ` Greg Banks
2007-10-01 19:27 ` [RFC, PATCH 12/35] svc: Add a generic transport svc_create_xprt function Tom Tucker
2007-10-02 15:39 ` Chuck Lever
2007-10-03 20:01 ` Tom Tucker
2007-10-03 20:04 ` Tom Tucker
2007-10-04 2:30 ` Greg Banks
2007-10-04 15:18 ` Chuck Lever
2007-10-01 19:27 ` [RFC, PATCH 13/35] svc: Change services to use new svc_create_xprt service Tom Tucker
2007-10-02 15:44 ` Chuck Lever
2007-10-02 16:45 ` Tom Tucker
2007-10-03 15:25 ` Chuck Lever
2007-10-03 16:23 ` Tom Tucker
2007-10-04 2:35 ` Greg Banks
2007-10-04 14:27 ` Tom Tucker [this message]
2007-10-09 17:09 ` J. Bruce Fields
2007-10-09 18:32 ` Tom Tucker
2007-10-09 19:49 ` J. Bruce Fields
2007-10-09 20:19 ` J. Bruce Fields
2007-10-01 19:28 ` [RFC,PATCH 14/35] svc: Change sk_inuse to a kref Tom Tucker
2007-10-03 11:12 ` Christoph Hellwig
2007-10-03 14:39 ` Tom Tucker
2007-10-03 14:45 ` J. Bruce Fields
2007-10-03 14:52 ` Christoph Hellwig
2007-10-03 15:11 ` J. Bruce Fields
2007-10-03 15:15 ` Christoph Hellwig
2007-10-08 3:52 ` Neil Brown
2007-10-03 15:13 ` Chuck Lever
2007-10-03 15:34 ` J. Bruce Fields
2007-10-04 2:51 ` Greg Banks
2007-10-01 19:28 ` [RFC, PATCH 15/35] svc: Move sk_flags to the svc_xprt structure Tom Tucker
2007-10-01 19:28 ` [RFC, PATCH 16/35] svc: Move sk_server and sk_pool to svc_xprt Tom Tucker
2007-10-01 19:28 ` [RFC,PATCH 17/35] svc: Make close transport independent Tom Tucker
2007-10-01 19:28 ` [RFC,PATCH 18/35] svc: Move sk_reserved to svc_xprt Tom Tucker
2007-10-01 19:28 ` [RFC, PATCH 19/35] svc: Make the enqueue service transport neutral and export it Tom Tucker
2007-10-01 19:28 ` [RFC,PATCH 20/35] svc: Make svc_send transport neutral Tom Tucker
2007-10-02 16:15 ` Chuck Lever
2007-10-02 16:46 ` Tom Tucker
2007-10-02 16:54 ` Chuck Lever
2007-10-04 2:59 ` Greg Banks
2007-10-01 19:28 ` [RFC, PATCH 21/35] svc: Change svc_sock_received to svc_xprt_received and export it Tom Tucker
2007-10-02 16:18 ` Chuck Lever
2007-10-01 19:28 ` [RFC,PATCH 22/35] svc: Remove sk_lastrecv Tom Tucker
2007-10-01 19:28 ` [RFC,PATCH 23/35] svc: Move the authinfo cache to svc_xprt Tom Tucker
2007-10-01 19:28 ` [RFC, PATCH 24/35] svc: Make deferral processing xprt independent Tom Tucker
2007-10-01 19:28 ` [RFC, PATCH 25/35] svc: Move the sockaddr information to svc_xprt Tom Tucker
2007-10-02 16:34 ` Chuck Lever
2007-10-02 16:50 ` Tom Tucker
2007-10-01 19:28 ` [RFC, PATCH 26/35] svc: Make svc_sock_release svc_xprt_release Tom Tucker
2007-10-01 19:28 ` [RFC,PATCH 27/35] svc: Make svc_recv transport neutral Tom Tucker
2007-10-02 16:36 ` Chuck Lever
2007-10-01 19:28 ` [RFC, PATCH 28/35] svc: Make svc_age_temp_sockets svc_age_temp_transports Tom Tucker
2007-10-01 19:28 ` [RFC, PATCH 29/35] svc: Move common create logic to common code Tom Tucker
2007-10-02 16:42 ` Chuck Lever
2007-10-02 16:51 ` Tom Tucker
2007-10-01 19:28 ` [RFC, PATCH 30/35] svc: Removing remaining references to rq_sock in rqstp Tom Tucker
2007-10-01 19:28 ` [RFC, PATCH 31/35] svc: Make svc_check_conn_limits xprt independent Tom Tucker
2007-10-01 19:28 ` [RFC, PATCH 32/35] svc: Move the xprt independent code to the svc_xprt.c file Tom Tucker
2007-10-01 19:28 ` [RFC, PATCH 33/35] svc: Add transport hdr size for defer/revisit Tom Tucker
2007-10-01 19:28 ` [RFC,PATCH 34/35] svc: Add /proc/sys/sunrpc/transport files Tom Tucker
2007-10-01 19:28 ` [RFC, PATCH 35/35] knfsd: Support adding transports by writing portlist file Tom Tucker
2007-10-02 15:25 ` [RFC,PATCH 00/35] SVC Transport Switch J. Bruce Fields
2007-10-02 16:18 ` Tom Tucker
2007-10-03 11:03 ` Greg Banks
2007-10-03 14:02 ` Tom Tucker
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1191508031.411.29.camel@trinity.ogc.int \
--to=tom@opengridcomputing.com \
--cc=bfields@fieldses.org \
--cc=gnb@sgi.com \
--cc=neilb@suse.de \
--cc=nfs@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.