GET initiator should allocate/prepare buffer for GET before calling
LNetGet (see ptlrpc_start_bulk_transfer), and pass MD handle of this
buffer into LNetGet(..., mdh, ...), lnet will pack handle of MD into GET
request and send to remote peer:
- if you are creating a LND w/o rdma_get, remote peer will send back this
MD handle together with bulk data in REPLY, so GET initiator can find
local buffer via MD handle (see lnet_parse->lnet_parse_reply), then call
into lnd_recv to finish receiving (see ksocknal_recv)
- if your LND can support rdma_get, LND also needs to create rdma
descriptor in LND for MD buffer, then send rdma descriptor to remote peer,
now remote peer can use this RDMA descriptor to finish GET (see
lnet_parse->lnet_parse_get and kiblnd_recv::IBLND_MSG_GET_REQ)
On 1/10/14 9:23 PM, "Tobias Groschup" <groschup(a)stud.uni-heidelberg.de>
the LND which I am implementing is now capable of handling LNET_MSG_PUT.
Or, at least, the LNet self test can create a group of nodes.
Now it is time for a real ping test, which requires LNET_MSG_GET messages.
It is not clear to me, how to handle that kind of LNet messages. The
LNDs send function get called with to send a get message, but without
any attached data (in this message, kiov and iov and the number of iov
is 0). So, the LND send this messages header to the node from where the
data should be fetched. On this node, the header is passed to LNet for
parsing. LNet calls the receive LNDs function with a LNET_MSG_REPLY,
this time with data attached.
Now, I am not sure what to do with that reply message. Should it be send
back to the requesting node, in order to get information where the data
should be placed? Or is this information already in the get request?
I tried to find documentation about this, or tried to understand the how
this is done by other LNDs (including the loopback device), but it was
not very clear (to me).
Thanks for your help and kind regards
HPDD-discuss mailing list