[Pvfs2-developers] bmi_thread_function question
Phil Carns
pcarns at wastedcycles.org
Wed Jul 26 17:32:34 EDT 2006
Sam Lang wrote:
>
> Hi All,
>
> I noticed that in thread-mgr.c:bmi_thread_function, there is a call to
> BMI_test_unexpected if the bmi_unexp_count > 0, which only happens on
> the server. The value of bmi_unexp_count on the server can be as high
> as 50 from the job_bmi_unexp posts in server.c. It looks like the
> bmi_unexp_array (which gets filled in with the unexpected messages
> received) is only allocated to hold 5 results though
> (THREAD_MGR_TEST_COUNT). At first glance this looks like a bug, since
> BMI_test_unexpected would be filling in the results past the 5th
> element. It seems like something like this would have caused some
> server crashes due to writing past the end of the array, and that we
> would have discovered something like that by now. How is this
> handled? Does bmi internally only handle at most 5 unexpected messages
> at a time?
This logic in thread-mgr.c is what prevents it from overrunning the
array (the incount variable is passed into BMI_test_unexpected to
indicate how many results it is allowed to retrieve):
incount = bmi_unexp_count;
if(incount > THREAD_MGR_TEST_COUNT)
incount = THREAD_MGR_TEST_COUNT;
I don't think the BMI function cares how big the array is (there
probably is no explicit internal limit).
-Phil
More information about the Pvfs2-developers
mailing list