Re: NFS Bug in 2.6.23 ? SOLUTION ?

From: Trond Myklebust
Date: Sun Nov 18 2007 - 14:42:44 EST



On Sun, 2007-11-18 at 19:44 +0100, Gianluca Alberici wrote:
> Trond,
>
> The problem is in nfs_mountpoint_timeout. After this time
> dentry_delete(/,4) removes the mountpoint, then it is very difficult to
> automount (at least with CFSD), one has got to try 2 or three times
> cd'ing into the mount point. Applications wont ever had the chance to
> autoremount (ENOTDIR).

Sounds like CFSD has a bug w.r.t. what fsid it returns to the client.

> I have some questions:
>
> - nfs_mountpoint_timeout seems to be set in sysctl.c even if nfsv4 is
> not. Is this correct ? I've read somewhere that it was introduced for v4.

Wrong. It applies to all mountpoint crossing. If the server tells us
that the fsid has changed, then we create a new mountpoint.

> - Why this sysctl is not registered in my 2.6.20 kernel where it should
> be registered ?

Prior to 2.6.21-rc5, we had a bug in register_nfs_fs() whereby it failed
to register the sysctl table unless you enabled NFSv4.

> - Why this parameter has not a 'disabled' value (i mean kind of -1) ?

Why should it? The current behaviour is quite correct. If you cross a
mountpoint, then you should remount in order to ensure that the inode
numbers remain unique per-filesystem.

We know that some ancient NFS servers had problems returning the correct
fsid in readdirplus replies, so 2.6.22 adds support to disable
readdirplus calls via a 'nordirplus' mount option. I guess you could try
that...

Trond

-
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/