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

Commit f9b7ebdf authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFSv4: Schedule recovery if nfs40_walk_client_list() is interrupted



If a timeout or a signal interrupts the NFSv4 trunking discovery
SETCLIENTID_CONFIRM call, then we don't know whether or not the
server has changed the callback identifier on us.
Assume that it did, and schedule a 'path down' recovery...

Tested-by: default avatarSteve Dickson <steved@redhat.com>
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
parent 706cb8db
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -531,6 +531,13 @@ int nfs40_walk_client_list(struct nfs_client *new,
			*result = pos;
			dprintk("NFS: <-- %s using nfs_client = %p ({%d})\n",
				__func__, pos, atomic_read(&pos->cl_count));
			goto out;
		case -ERESTARTSYS:
		case -ETIMEDOUT:
			/* The callback path may have been inadvertently
			 * changed. Schedule recovery!
			 */
			nfs4_schedule_path_down_recovery(pos);
		default:
			goto out;
		}