From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============4660206824177397708==" MIME-Version: 1.0 From: Walker, Benjamin Subject: Re: [SPDK] Transport Date: Tue, 25 Oct 2016 22:21:11 +0000 Message-ID: <1477434069.2512.28.camel@intel.com> In-Reply-To: 6D16B6E5-083D-4F22-83F2-67406B051BA3@cloudsimple.com List-ID: To: spdk@lists.01.org --===============4660206824177397708== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable On Tue, 2016-10-25 at 23:52 +0530, Kumaraparameshwaran Rathnavel wrote: > Hey thanks for the reply. > = > Can you please briefly explain me about the listener cm_id for incoming > connections and active connection cm_id for incoming NVMe-OF=C2=A0=C2=A0r= equests. > = > Does this mean that initially when there is no connection established it = is > acceptor_poll and after the connection establishment it is connection cm_= id. Our NVMe-oF target has a generalized fabric transport layer (transport.h/.c) that abstracts away the RDMA parts from the rest of the code. This transport layer consists of a number of callbacks that the specific transports (i.e. = RDMA) must implement. Two of the functions deal with listening for incoming connections: /** * Check for new connections on the transport. */ void (*acceptor_poll)(void); /** =C2=A0=C2=A0* Instruct the acceptor to listen on the address provided. This =C2=A0=C2=A0* may be called multiple times. =C2=A0=C2=A0*/ int (*listen_addr_add)(struct spdk_nvmf_listen_addr *listen_addr); listen_addr_add() instructs the transport to accept connections on the addr= ess provided. The acceptor_poll() function should check each listen address previously specified for pending new connection requests. When the acceptor_poll() function discovers a new pending NVMe-oF connect capsule, it should allocate an spdk_nvmf_request and call spdk_nvmf_request_exec() to t= ell the general purpose library code to process it. Embedded in that request is= a new connection object for the newly established connection. Each queue pair= is a connection in NVMe-oF and the library will poll the transport for new reque= sts on that queue pair by calling the conn_poll() function pointer. The listen addresses are static after start up and they persist indefinitely, polled at some lower frequency, to accept new connections. The connections that are created as part of new queue pairs are polled for new NVMe-oF request capsu= les to perform I/O. > = > Thanking You, > Param > > = > > On 25-Oct-2016, at 10:26 PM, Walker, Benjamin > > wrote: > > = > > On Tue, 2016-10-25 at 20:16 +0530, Kumaraparameshwaran Rathnavel wrote: > > > = > > > Hi Guys,=C2=A0 > > > = > > > Can you tell me the functionality difference between the aaceptor_pol= l and > > > conn_poll in the file rdma.c > > = > > The acceptor_poll function should check the listener cm_id for incoming > > connections. The conn_poll should check the active connection cm_id for > > incoming > > NVMe-oF requests. > > = > > > = > > > = > > > Thanking you > > > Param > > > = > > > Sent from my iPhone > > > _______________________________________________ > > > SPDK mailing list > > > SPDK(a)lists.01.org > > > https://lists.01.org/mailman/listinfo/spdk > > _______________________________________________ > > SPDK mailing list > > SPDK(a)lists.01.org > > https://lists.01.org/mailman/listinfo/spdk > = > _______________________________________________ > SPDK mailing list > SPDK(a)lists.01.org > https://lists.01.org/mailman/listinfo/spdk --===============4660206824177397708==--