Hi Sam,
Hi Scott,
Since clients initiate all first contact with the servers, what is
the
standard procedure? Send an unexpected message only or post a receive
and then send an unexpected message and wait for an expected send
from
the server?
The latter.
I am trying to determine whether a send or receive is posted first
for a
new peer.
The msgpairarray state machine in src/common/misc/msgpairarray.sm
is the
engine for most of the request/response style unexpected messages from
client to server. The msgpairarray_post function first calls
job_bmi_recv which posts the receive (calls BMI_post_recv), and then
calls job_bmi_send_list, which basically translates to calling
BMI_post_sendunexpected_list.
Then I need to have code in the recv function to create a new peer's
state if it is the first contact. In Lustre, this only happens in the
send function.
Also, can more than one BMI method be called at anyone time (e.g.
concurrent send and/or recvs)?
Yes. All the BMI calls are non-blocking, and we often post many
receives and sends and let the test call drive completion of them.
-sam
I should have have asked it a different way. Can multiple calls to
the send function happen at the same time (i.e. is BMI threaded and
make simultaneous calls to the send function or recv function or any
combination of functions)? I am wondering about the potential for
race conditions and when I need to protect against them.
Thanks,
Scott
_______________________________________________
Pvfs2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers