NFS: Ensure that we respect NFS_MAX_TCP_TIMEOUT
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Thu, 20 Dec 2007 21:03:57 +0000 (16:03 -0500)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Wed, 30 Jan 2008 07:05:59 +0000 (02:05 -0500)
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>
fs/nfs/client.c

index 9066133..59a6dcc 100644 (file)
@@ -387,12 +387,16 @@ static void nfs_init_timeout_values(struct rpc_timeout *to, int proto,
        switch (proto) {
        case XPRT_TRANSPORT_TCP:
        case XPRT_TRANSPORT_RDMA:
-               if (!to->to_initval)
+               if (to->to_initval == 0)
                        to->to_initval = 60 * HZ;
                if (to->to_initval > NFS_MAX_TCP_TIMEOUT)
                        to->to_initval = NFS_MAX_TCP_TIMEOUT;
                to->to_increment = to->to_initval;
                to->to_maxval = to->to_initval + (to->to_increment * to->to_retries);
+               if (to->to_maxval > NFS_MAX_TCP_TIMEOUT)
+                       to->to_maxval = NFS_MAX_TCP_TIMEOUT;
+               if (to->to_maxval < to->to_initval)
+                       to->to_maxval = to->to_initval;
                to->to_exponential = 0;
                break;
        case XPRT_TRANSPORT_UDP: