2008-01-08 12:41:18

by Chuck Lever III

[permalink] [raw]
Subject: Re: Man page update for timeo= and retrans= options.

Hi Neil-

On Jan 7, 2008, at 8:32 PM, Neil Brown wrote:
> On Monday January 7, [email protected] wrote:
>> Hi Neil-
>>
>> I just spent two months and rewrote all of nfs(5). It should appear
>> in the next release of nfs-utils. Steve, when can we expect to see
>> the updated man page?
>
> I thought I had seem some rewrite go past, but it wasn't in my inbox
> any more and also not it Steve's git so I just went ahead...

> I see it is in the .git now (as of Friday).

Good. I hope others will also have a chance to look it over. And
thanks for your scrutiny, btw.

> Comments:
> - It says UDP defaults to 7/10 of a second, but
> nfs_init_timeout_values()
> says:
> if (!to->to_initval)
> to->to_initval = 11 * HZ / 10;
>
> which suggests 11/10 of a second.

Yup. I forgot about that code change, which I believe was to make
UDP on Linux work more like Solaris does.

> - It says
> If the retrans option is not specified, the NFS client retries
> each request three times.
>
> but nfs_init_timeout_values() says
>
> if (!to->to_retries)
> to->to_retries = 2;
>
> which suggests it retries 2 time (or tries 3 times).

Yes, nfs(5) should be changed to say "tries each request 3 times."

> - It says:
> After each retransmission, the NFS client doubles the timeout
> for that request, up to a maximum timeout length of 60 seconds.
>
> but doesn't (to me) make it clear that only applies to UDP.

It follows "However, for NFS over UDP" .... But perhaps the UDP part
can be wholly split into a separate paragraph to make the distinction
more clear.

I'll post a patch with these updates to nfs(5).

> For TCP, the timeouts appear to increase linearly up to 600 seconds.

The TCP RTT should not change after a timeout. At least that was the
way it worked when I modified it a few years ago.

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com