From: Trond Myklebust Date: Tue, 18 Mar 2014 18:11:24 +0000 (-0400) Subject: NFSv4: Schedule recovery if nfs40_walk_client_list() is interrupted X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=f9b7ebdf7e41671de7926a5951c324258200b42a;p=linux-beck.git 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 Signed-off-by: Trond Myklebust --- diff --git a/fs/nfs/nfs4client.c b/fs/nfs/nfs4client.c index 0e46d3d1b6cc..aa9ef4876046 100644 --- a/fs/nfs/nfs4client.c +++ b/fs/nfs/nfs4client.c @@ -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; }