[pnfs] [nfs41] 10 patches for async session reset

Benny Halevy bhalevy at panasas.com
Thu Jun 12 07:40:24 EDT 2008


Andy, sorry but after reading the patchset I think the method
you implemented can be simplified if the destroy session path
wouldn't spawn a kthread for session_destroyer().

nfs41_destroy_session could just mark the session for destroy
and as expired and that will function as a barrier.
That should be the only thing to do on the various cleanup paths.
(including nfs41_sequence_call_done which starts session recovery
today)

Recovery should be done only on the setup_sequence path and it should
wait until the slot table is drained, otherwise it should sleep
on the slot_tbl_waitq.  When all slots are done, recovery can start.
For the reset case it should just start with sending a destroy_session
before recovering it.

Can this work?

Benny

On Jun. 11, 2008, 21:18 +0300, "Adamson, Andy" <William.Adamson at netapp.com> wrote:
> The first patch in this series fixes a bug in create session. All of the rest implement asynchronous session reset, where a session gets an op_sequence operation error. This code places any new rpc_task that would look for a slot on a new queue moves any rpc_tasks waiting for a slot on the forward channel to the same queue, waits for the current outstanding rpc's (e.g. slots to clear), destroys the session, initializes a new session, and wakes
> up all the tasks on the new queue. the session recovery code is then called by the next rpc_task - create session is then called,
> and voila! the session is reset.
> 
> I wrote a simple add-on to the pynfs server that returned NFS4ERR_MISORDERED every 50th OP_SEQUENCE call. This code passes basic and general connectathon tests against this server. I'll work on adding the pynfs changes to the python distro.
> 
> -->Andy
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> pNFS mailing list
> pNFS at linux-nfs.org
> http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs



More information about the pNFS mailing list