[Pvfs2-developers] request unify and cleanup

Sam Lang slang at mcs.anl.gov
Wed Feb 13 11:11:57 EST 2008


Hi Walt,

Yes its against HEAD, and its already been committed.  It should apply  
cleanly to your branch though.
-sam

On Feb 13, 2008, at 9:09 AM, Walter B. Ligon III wrote:

> Sam,  is this patch against the current trunk?  This looks like  
> something we should include in our branch, since we are about to add  
> a server request/state machine or 3.
>
> Walt
>
> Sam Lang wrote:
>> The attached patch tries to cleanup some of our server request  
>> code, so that adding a new server request+state machine doesn't  
>> mean searching for all the places where we perform a switch/case on  
>> the server op enum.  It was motivated by the need for a more  
>> generic prelude state machine and request scheduler, but its been  
>> something that I've been itching to knock out for a while now.  I  
>> think there are still improvements that can be made here,  
>> especially to the encoding/decoding and request scheduler, but this  
>> gives me the functionality that I needed, so I decided its a good  
>> place to stop.
>> What it does in summary:
>> The normal path for a server request operation is to jump to the  
>> prelude state machine, which tries schedule the request based on  
>> the handle+fsid.  This meant that the request scheduler code had a  
>> switch/case returning the handle+fsid for each request we defined.   
>> The function was also overloaded with a readonly parameter (whether  
>> the request modified any objects on the server), and a scheduling  
>> policy parameter (as the return code), which specified whether the  
>> request scheduling could be bypassed for this request.
>> I moved all that to a per-request parameter structure, that gets  
>> specified within the server state machine for the request.  Now  
>> there is one array of server requests (moved to pvfs2-server-req.c)  
>> which the request scheduler and prelude state machine can poke at  
>> to get parameters (defined in the state machine for that request),  
>> and based decisions on.
>> The patch includes some other minor changes:
>> * A fix to the BMI addr ref count increment/decrement.  Previously,  
>> the addr ref count was being incremented/decremented in the prelude/ 
>> final-response state machines.  That requires that those state  
>> machines get invoked, which I don't want to have to depend on.   
>> I've moved the INC call to the unexpected_sm, and the DEC call to  
>> where the state machine gets finished in the server.  That way we  
>> don't have to worry about whether we're using prelude/final-response.
>> * Cleanup of the request scheduler.  The way we were changing the  
>> mode from normal to admin was sort of embedded into the request  
>> scheduling code, so we had to hack the mode change from prelude_sm  
>> instead of in setparam.  Also, the request scheduler had to be  
>> aware of the setparam fields in the request.  I've moved the mode  
>> change code to separate request scheduler and job calls.  I think  
>> something similar could be done for the timer code (it doesn't  
>> really belong in the request scheduler), but I'll leave that for  
>> another patch.
>> * Changed the way we compile the server binary in Makefile.in to  
>> allow for multiple object files.
>> Let me know what you think.
>> Thanks,
>> -sam
>> ------------------------------------------------------------------------
>> _______________________________________________
>> Pvfs2-developers mailing list
>> Pvfs2-developers at beowulf-underground.org
>> http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers
>
> -- 
> Dr. Walter B. Ligon III
> Associate Professor
> ECE Department
> Clemson University
>



More information about the Pvfs2-developers mailing list