[pnfs] [PATCH 9/9] pnfs client prevent race in sequence slot

Trond Myklebust trond.myklebust at fys.uio.no
Thu Sep 27 17:59:07 EDT 2007


On Thu, 2007-09-27 at 17:54 -0400, Trond Myklebust wrote:
> On Thu, 2007-09-27 at 22:54 +0200, Benny Halevy wrote:
> 
> > The problem with doing this is that you might be racing with the 
> > original call in case it
> > was delayed in the network for some obscure reason and you could get 
> > MISORDERED or DELAY
> > on the retry.  In the DELAY case you'll need to poll the server until it 
> > finishes processing the previous
> > request, then you should get MISORDERED again and you can try seq#+1 yet 
> > again.
> 
> You should never get a NFS4ERR_SEQ_MISORDERED error since you are
> retrying a sequenceid that is known to be either the next free
> sequenceid or the current in-use one. You should therefore get either
> NFS4ERR_DELAY or NFS4ERR_SEQ_FALSE_RETRY. Both those errors are obvious
> to recover from...

Ah... However, I see one problem:

If your RPC request happens to be identical to the last one, then the
server may treat it as a replay. Not good if, for instance, you are
trying to call GETATTR after sending a non-idempotent operation on
another slot...

Trond



More information about the pNFS mailing list