session: handle NFS4ERR_BADSLOT errors

NFS4ERR_BADSLOT indicates that the supplied slotid is outside the server's expected range.  update table.max_slots to this value to prevent it from being used again, then acquire a new slot and retry the rpc

Signed-off-by: Casey Bodley <cbodley@citi.umich.edu>
This commit is contained in:
Casey Bodley 2012-05-10 12:26:32 -04:00 committed by Olga Kornievskaia
parent a3146af76d
commit 30e8df149e
3 changed files with 37 additions and 0 deletions

View file

@ -254,6 +254,12 @@ retry:
goto do_retry;
goto out;
case NFS4ERR_BADSLOT:
/* free the slot and retry with a new one */
if (op1 != OP_SEQUENCE || nfs41_session_bad_slot(session, args))
goto out;
goto retry;
case NFS4ERR_GRACE:
case NFS4ERR_DELAY:
#define RETRY_INDEFINITELY