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: Steve Dickson <steved@redhat.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
This commit is contained in:
parent
706cb8db3b
commit
f9b7ebdf7e
|
@ -531,6 +531,13 @@ int nfs40_walk_client_list(struct nfs_client *new,
|
||||||
*result = pos;
|
*result = pos;
|
||||||
dprintk("NFS: <-- %s using nfs_client = %p ({%d})\n",
|
dprintk("NFS: <-- %s using nfs_client = %p ({%d})\n",
|
||||||
__func__, pos, atomic_read(&pos->cl_count));
|
__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:
|
default:
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue