Re: NFS on 2.6.0-test9:

From: Trond Myklebust
Date: Sun Nov 09 2003 - 17:05:22 EST



OK. That points squarely at the RTO timeout "inheritance" change.
There are 2 differences as it stands in 2.6.0 w.r.t. the 2.4.23-pre
code: the no upper limit, and the inheritance update algorithm.

Could you therefore try the following patch.

Cheers,
Trond

diff -u --recursive --new-file linux-2.6.0-test9/include/linux/sunrpc/timer.h linux/include/linux/sunrpc/timer.h
--- linux-2.6.0-test9/include/linux/sunrpc/timer.h 2003-11-07 21:03:45.000000000 -0500
+++ linux/include/linux/sunrpc/timer.h 2003-11-09 16:55:43.000000000 -0500
@@ -25,9 +25,18 @@

static inline void rpc_set_timeo(struct rpc_rtt *rt, int timer, int ntimeo)
{
+ int *t;
if (!timer)
return;
- rt->ntimeouts[timer-1] = ntimeo;
+ t = &rt->ntimeouts[timer-1];
+ if (ntimeo < *t) {
+ if (*t > 0)
+ (*t)--;
+ } else {
+ if (ntimeo > 8)
+ ntimeo = 8;
+ *t = ntimeo;
+ }
}

static inline int rpc_ntimeo(struct rpc_rtt *rt, int timer)
diff -u --recursive --new-file linux-2.6.0-test9/net/sunrpc/timer.c linux/net/sunrpc/timer.c
--- linux-2.6.0-test9/net/sunrpc/timer.c 2003-11-07 21:06:11.000000000 -0500
+++ linux/net/sunrpc/timer.c 2003-11-09 16:57:15.000000000 -0500
@@ -40,6 +40,7 @@
rt->srtt[i] = init;
rt->sdrtt[i] = RPC_RTO_INIT;
}
+ memset(rt->ntimeouts, 0, sizeof(rt->ntimeouts));
}

/*

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/