The client cannot reuse a slot while the server's still working on the previous RPC using it. The symptom Bruce saw without this patch was occasional ESERVERFAULT during Connectathon special tests, 30 MB write/read test. Reported-by: J. Bruce Fields <bfields@xxxxxxxxxxxx> Tested-by: J. Bruce Fields <bfields@xxxxxxxxxxxx> Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxxx> --- fs/nfs/nfs4proc.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index be6544a..70895d6 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -386,6 +386,12 @@ static void nfs41_sequence_done(struct nfs_client *clp, spin_unlock(&clp->cl_lock); return; } + + /* Do not free slot if retried while operation was in progress */ + if (res->sr_status == -NFS4ERR_DELAY) { + dprintk("%s: Operation in progress\n", __func__); + return; + } out: /* The session may be reset by one of the error handlers. */ dprintk("%s: Error %d free the slot \n", __func__, res->sr_status); -- 1.6.4 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html