Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -755,6 +755,13 @@ static int nfs41_sequence_process(struct rpc_task *task,
	/* Check the SEQUENCE operation status */
	switch (res->sr_status) {
	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 */
		slot->seq_done = 1;
		clp = session->clp;