Re: [PATCH] nfs_unlink() race (was: nfs_refresh_inode: inode number mismatch)

Jan Harkes (jaharkes@cs.cmu.edu)
Thu, 12 Jun 2003 17:59:26 -0400


On Wed, Jun 11, 2003 at 07:47:24PM +0200, Trond Myklebust wrote:
> >>>>> " " == Trond Myklebust <trond.myklebust@fys.uio.no> writes:
>
> > 2.4 has the 'return ESTALE if current dir fails d_revalidate()'
> > test. Looks like the vfat stuff has the same problem that
>
> I should learn to complete my own sentences before sending... The
> above should read:
>
> Looks like the vfat stuff has the same problem that Coda did. It is
> unintentionally triggering the ESTALE code, as it assumes that
> d_revalidate() is advisory only.

Coda still has the problem with 2.4. The only thing I have been telling
people that hit the problem is to take the revalidate patch out.

btw. The sheer number of problem cases is already reduced significantly
by the following patch which avoids calling revalidate on every name
that happens to start with a '.'.

Jan

diff -urN --exclude-from=dontdiff linux-2.4.21-rc2/fs/namei.c linux-2.4.21-rc2-coda/fs/namei.c
--- linux-2.4.21-rc2/fs/namei.c 2003-05-09 02:20:44.000000000 -0400
+++ linux-2.4.21-rc2-coda/fs/namei.c 2003-05-14 02:23:07.000000000 -0400
@@ -627,6 +627,8 @@
nd->last_type = LAST_DOT;
else if (this.len == 2 && this.name[1] == '.')
nd->last_type = LAST_DOTDOT;
+ else
+ goto return_base;
return_reval:
/*
* We bypassed the ordinary revalidation routines.

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