> > In, for instance, the ptllnd, when sending a GET request, I
> > see tx_lnet_replymsg being set to something which is
> > apparently being allocated from the core of lnet. Later, I
> > see lnet_finalize being called on that thing.
When lustre calls LNetGet, it expects the following events to be
delivered...
1. LNET_EVENT_SEND when the "GET" has been sent.
2. LNET_EVENT_REPLY when the peer has responded.
An LND that does not support "optimized" gets simply sends off the
LNET GET message and calls lnet_finalize() on it to deliver the
LNET_EVENT_SEND. Some time later when the LND receives an LNET REPLY
it calls lnet_parse() which matches it against the MD specified in the
original GET and calls back to receive the reply payload into it.
When that has completed, the LND calls lnet_finalize() on it to
deliver the LNET_EVENT_REPLY.
An LND that supports "optimized" gets can eliminate the LNET REPLY
message in some circumstances. But the LNET_EVENT_REPLY event must
still be delivered, so it creates one with lnet_create_reply_msg()
before it sends off the GET_REQ. When everything has completed, it
then calls lnet_finalize() on the original GET (to deliver the
LNET_EVENT_SEND) and also on this reply message (to deliver the
LNET_EVENT_REPLY).
--
Cheers,
Eric
---------------------------------------------------
|Eric Barton Barton Software |
|9 York Gardens Tel: +44 (117) 330 1575 |
|Clifton Mobile: +44 (7909) 680 356 |
|Bristol BS8 4LL Fax: call first |
|United Kingdom E-Mail: eeb@bartonsoftware.com|
---------------------------------------------------