diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2007-12-20 16:03:57 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-01-30 02:05:59 -0500 |
commit | 7a3e3e18e40848b6f01d44407ce86b91b8535fbd (patch) | |
tree | 3caa0944475ac1fcb66a939b84562867c1c60e5e /fs | |
parent | ba7392bb37cb12781890f45d7ddee1618e33a036 (diff) |
NFS: Ensure that we respect NFS_MAX_TCP_TIMEOUT
It isn't sufficient just to limit timeout->to_initval, we also need to
limit to_maxval.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfs/client.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/nfs/client.c b/fs/nfs/client.c index 906613362a56..59a6dccab548 100644 --- a/fs/nfs/client.c +++ b/fs/nfs/client.c | |||
@@ -387,12 +387,16 @@ static void nfs_init_timeout_values(struct rpc_timeout *to, int proto, | |||
387 | switch (proto) { | 387 | switch (proto) { |
388 | case XPRT_TRANSPORT_TCP: | 388 | case XPRT_TRANSPORT_TCP: |
389 | case XPRT_TRANSPORT_RDMA: | 389 | case XPRT_TRANSPORT_RDMA: |
390 | if (!to->to_initval) | 390 | if (to->to_initval == 0) |
391 | to->to_initval = 60 * HZ; | 391 | to->to_initval = 60 * HZ; |
392 | if (to->to_initval > NFS_MAX_TCP_TIMEOUT) | 392 | if (to->to_initval > NFS_MAX_TCP_TIMEOUT) |
393 | to->to_initval = NFS_MAX_TCP_TIMEOUT; | 393 | to->to_initval = NFS_MAX_TCP_TIMEOUT; |
394 | to->to_increment = to->to_initval; | 394 | to->to_increment = to->to_initval; |
395 | to->to_maxval = to->to_initval + (to->to_increment * to->to_retries); | 395 | to->to_maxval = to->to_initval + (to->to_increment * to->to_retries); |
396 | if (to->to_maxval > NFS_MAX_TCP_TIMEOUT) | ||
397 | to->to_maxval = NFS_MAX_TCP_TIMEOUT; | ||
398 | if (to->to_maxval < to->to_initval) | ||
399 | to->to_maxval = to->to_initval; | ||
396 | to->to_exponential = 0; | 400 | to->to_exponential = 0; |
397 | break; | 401 | break; |
398 | case XPRT_TRANSPORT_UDP: | 402 | case XPRT_TRANSPORT_UDP: |