From: Tom Tucker <tom@opengridcomputing.com>
To: Neil Brown <neilb@suse.de>
Cc: nfs@lists.sourceforge.net, gnb@sgi.com
Subject: Re: [RFC, PATCH 33/33] knfsd: Support adding transports by writing portlist file
Date: Fri, 28 Sep 2007 12:33:58 -0500 [thread overview]
Message-ID: <1191000838.10604.97.camel@trinity.ogc.int> (raw)
In-Reply-To: <18172.34744.784138.666846@notabene.brown>
On Fri, 2007-09-28 at 14:48 +1000, Neil Brown wrote:
> On Thursday September 27, tom@opengridcomputing.com wrote:
> >
> > Update the write handler for the portlist file to allow creating new
> > listening endpoints on a transport. The general form of the string is:
> >
> > <transport_name><space><port number>
> >
> > For example:
> >
> > tcp 2049
> >
> > This is intended to support the creation of a listening endpoint for
> > RDMA transports without adding #ifdef code to the nfssvc.c file.
> > The general idea is that the rpc.nfsd program would read the transports
> > file and then write the portlist file to create listening endpoints
> > for all or selected transports. The current mechanism of writing an
> > fd would become obsolete.
>
> Nuh.
> I'll only accept
> rdma 2049
> (or whatever) because there seems to be no other way to do it.
> Writing an 'fd' is the *preferred* way.
>
> There is more to binding an endpoint than protocol and port number.
> There is also local address and I'm not convinced that someone might
> come up with some other way they want to pre-condition a socket.
Agreed.
Forgive me for deferring the it-should-be-socket question for a
paragraph or two, but...
This version was much less ambitious than what I wanted to do, which was
extend the syntax and consolidate listener creation.
The string would be something like:
addr-qualifier addr port xprt-string xprt-specific-ops
For example,
ipv4 0.0.0.0 2049 udp
ipv4 10.2.1.5 2049 tcp
ipv6 ff:ff:ff:ff:10.4.1.5 2049 tcp
ipv4 10.3.1.5 2050 rdma
The upside is that all listeners would be created in the same way. The
downside is that the string processing and endpoint creation are all
done in the kernel in the proc-fs handler.
> If there was any way to associate an RDMA endpoint with a
> filedescriptor, I would much prefer that 'rpc.nfsd' does that and passes
> down the filedescriptor.
With regard to associating a socket with an RDMA endpoint, IMO it is
technically feasible, but politically impossible at this point. Various
degrees of integration have been discussed on both the OpenFabrics and
netdev mailing lists. To summarize the viewpoints:
- Key "netdev/core people" do not want _any_ core changes to enable RDMA
under any circumstances. They believe iWARP(RDMA/TOE) and IB (RDMA) are
"point in time technologies" that are doomed to the bone pile and that
integrating into the core would complicate and destabilize the stack.
- Most "RDMA people" see no benefit in sockets because the I/O model is
so different, the sockets connection model is not asynchronous, and
there is no way to specify the RDMA transport connection and route
qualifiers.
- A few "RDMA people" like a sockets approach. It was actually
implemented as part of an early SDP IB implementation.
Obviously, there are as many variants of the above as there are dogs in
the fight, but this is my sense of the fundamental issues.
> If RDMA is so no-Unix-like (rant rant..)
> that there is no such file descriptor, then I guess we can live with
> getting the kernel to open the connection.
>
At this point, I believe this is the way to do it.
Thanks,
Tom
>
> >
> > Signed-off-by: Tom Tucker <tom@opengridcomputing.com>
> > ---
> >
> > fs/nfsd/nfsctl.c | 16 ++++++++++++++++
> > 1 files changed, 16 insertions(+), 0 deletions(-)
> >
> > diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
> > index baac89d..923b817 100644
> > --- a/fs/nfsd/nfsctl.c
> > +++ b/fs/nfsd/nfsctl.c
> > @@ -554,6 +554,22 @@ static ssize_t write_ports(struct file *
> > kfree(toclose);
> > return len;
> > }
> > + /*
> > + * Add a transport listener by writing it's transport name
> > + */
> > + if (isalnum(buf[0])) {
>
> Should really be "isalpha" as we already know it isn't isdigit.
>
> NeilBrown
>
>
> > + int err;
> > + char transport[16];
> > + int port;
> > + if (sscanf(buf, "%15s %4d", transport, &port) == 2) {
> > + err = nfsd_create_serv();
> > + if (!err)
> > + err = svc_create_xprt(nfsd_serv,
> > + transport, port,
> > + SVC_SOCK_ANONYMOUS);
> > + return err < 0 ? err : 0;
> > + }
> > + }
> > return -EINVAL;
> > }
> >
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
NFS maillist - NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs
next prev parent reply other threads:[~2007-09-28 17:35 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-27 4:57 [RFC,PATCH 00/33] SVC Transport Switch Tom Tucker
2007-09-27 5:01 ` [RFC,PATCH 01/33] svc: Add an svc transport class Tom Tucker
2007-09-27 5:01 ` [RFC,PATCH 02/33] svc: Make svc_sock the tcp/udp transport Tom Tucker
2007-09-27 5:01 ` [RFC, PATCH 03/33] svc: Change the svc_sock in the rqstp structure to a transport Tom Tucker
2007-09-27 5:01 ` [RFC, PATCH 04/33] svc: Add a max payload value to the transport Tom Tucker
2007-09-27 5:01 ` [RFC, PATCH 05/33] svc: Move sk_sendto and sk_recvfrom to svc_xprt_class Tom Tucker
2007-09-27 5:01 ` [RFC, PATCH 06/33] svc: Add transport specific xpo_release function Tom Tucker
2007-09-28 2:58 ` Neil Brown
2007-09-28 16:06 ` Tom Tucker
2007-09-27 5:01 ` [RFC,PATCH 07/33] svc: Add per-transport delete functions Tom Tucker
2007-09-27 5:01 ` [RFC,PATCH 08/33] svc: Add xpo_prep_reply_hdr Tom Tucker
2007-09-27 5:01 ` [RFC, PATCH 09/33] svc: Add a transport function that checks for write space Tom Tucker
2007-09-28 3:03 ` Neil Brown
2007-09-28 16:09 ` Tom Tucker
2007-09-27 5:01 ` [RFC, PATCH 10/33] svc: Move close processing to a single place Tom Tucker
2007-09-27 5:01 ` [RFC,PATCH 11/33] svc: Add xpo_accept transport function Tom Tucker
2007-09-28 3:21 ` Neil Brown
2007-09-28 16:10 ` Tom Tucker
2007-09-27 5:01 ` [RFC, PATCH 12/33] svc: Add a generic transport svc_create_xprt function Tom Tucker
2007-09-28 3:21 ` Neil Brown
2007-09-28 16:15 ` Tom Tucker
2007-09-27 5:02 ` [RFC, PATCH 13/33] svc: Change services to use new svc_create_xprt service Tom Tucker
2007-09-27 5:02 ` [RFC,PATCH 14/33] svc: Change sk_inuse to a kref Tom Tucker
2007-09-27 5:02 ` [RFC, PATCH 15/33] svc: Move sk_flags to the svc_xprt structure Tom Tucker
2007-09-27 5:02 ` [RFC, PATCH 16/33] svc: Move sk_server and sk_pool to svc_xprt Tom Tucker
2007-09-27 5:02 ` [RFC,PATCH 17/33] svc: Make close transport independent Tom Tucker
2007-09-27 5:02 ` [RFC,PATCH 18/33] svc: Move sk_reserved to svc_xprt Tom Tucker
2007-09-27 5:02 ` [RFC, PATCH 19/33] svc: Make the enqueue service transport neutral and export it Tom Tucker
2007-09-27 5:02 ` [RFC,PATCH 20/33] svc: Make svc_send transport neutral Tom Tucker
2007-09-27 5:02 ` [RFC, PATCH 21/33] svc: Change svc_sock_received to svc_xprt_received and export it Tom Tucker
2007-09-27 5:02 ` [RFC,PATCH 22/33] svc: Move sk_lastrecv to svc_xprt Tom Tucker
2007-09-28 4:25 ` Neil Brown
2007-09-28 16:16 ` Tom Tucker
2007-10-03 10:10 ` Greg Banks
2007-09-27 5:02 ` [RFC,PATCH 23/33] svc: Move the authinfo cache " Tom Tucker
2007-09-28 4:30 ` [RFC, PATCH " Neil Brown
2007-09-29 20:49 ` Tom Tucker
2007-09-27 5:02 ` [RFC, PATCH 24/33] svc: Make deferral processing xprt independent Tom Tucker
2007-09-27 5:02 ` [RFC, PATCH 25/33] svc: Move the sockaddr information to svc_xprt Tom Tucker
2007-09-28 4:36 ` Neil Brown
2007-09-28 16:44 ` Tom Tucker
2007-09-28 16:53 ` Chuck Lever
2007-09-27 5:02 ` [RFC, PATCH 26/33] svc: Make svc_sock_release svc_xprt_release Tom Tucker
2007-09-27 5:02 ` [RFC,PATCH 27/33] svc: Make svc_recv transport neutral Tom Tucker
2007-09-27 5:02 ` [RFC, PATCH 28/33] svc: Make svc_age_temp_sockets svc_age_temp_transports Tom Tucker
2007-09-27 5:02 ` [RFC, PATCH 29/33] svc: Move common create logic to common code Tom Tucker
2007-09-27 5:02 ` [RFC, PATCH 30/33] svc: Removing remaining references to rq_sock in rqstp Tom Tucker
2007-09-27 5:02 ` [RFC, PATCH 31/33] svc: Move the xprt independent code to the svc_xprt.c file Tom Tucker
2007-09-27 5:02 ` [RFC,PATCH 32/33] svc: Add /proc/sys/sunrpc/transport files Tom Tucker
2007-09-27 5:02 ` [RFC, PATCH 33/33] knfsd: Support adding transports by writing portlist file Tom Tucker
2007-09-28 4:48 ` Neil Brown
2007-09-28 17:33 ` Tom Tucker [this message]
2007-10-03 10:27 ` Greg Banks
2007-09-27 17:55 ` [RFC,PATCH 00/33] SVC Transport Switch J. Bruce Fields
2007-09-28 4:51 ` Neil Brown
2007-09-28 17:39 ` Tom Tucker
2007-10-01 15:58 ` J. Bruce Fields
2007-10-03 9:57 ` Greg Banks
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=1191000838.10604.97.camel@trinity.ogc.int \
--to=tom@opengridcomputing.com \
--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.