[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