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
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

--
Dr. Walter B. Ligon III
Associate Professor
ECE Department
Clemson University


_______________________________________________
Pvfs2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

Reply via email to