[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