Commit a865880e authored by Olga Kornievskaia's avatar Olga Kornievskaia Committed by Anna Schumaker

Retry operation on EREMOTEIO on an interrupted slot

If an operation got interrupted, then since we don't know if the
server processed it on not, we keep the seq#. Upon reuse of slot
and seq# if we get reply from the cache (ie EREMOTEIO) then we
need to retry the operation after bumping the seq#
Signed-off-by: default avatarOlga Kornievskaia <kolga@netapp.com>
Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
parent bfc505de
...@@ -755,6 +755,13 @@ static int nfs41_sequence_process(struct rpc_task *task, ...@@ -755,6 +755,13 @@ static int nfs41_sequence_process(struct rpc_task *task,
/* Check the SEQUENCE operation status */ /* Check the SEQUENCE operation status */
switch (res->sr_status) { switch (res->sr_status) {
case 0: case 0:
/* If previous op on slot was interrupted and we reused
* the seq# and got a reply from the cache, then retry
*/
if (task->tk_status == -EREMOTEIO && interrupted) {
++slot->seq_nr;
goto retry_nowait;
}
/* Update the slot's sequence and clientid lease timer */ /* Update the slot's sequence and clientid lease timer */
slot->seq_done = 1; slot->seq_done = 1;
clp = session->clp; clp = session->clp;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment