Bruno Haible wrote: > A followup to 2010-11-13 > <http://lists.gnu.org/archive/html/bug-gnulib/2010-11/msg00180.html>: > > On a Linux 2.6.16.60 machine, I still get failures from 'test-rename' > and 'test-renameat' over NFS: > > test-rename.h:279: assertion failed > FAIL: test-renameat > > The reason is that the mkdir() call at line 279 fails with EEXIST > because the old directory name is still in the stat() cache. > > This change makes the tests succeed. OK to commit? > > > 2010-12-25 Bruno Haible <br...@clisp.org> > > rename, renameat: Avoid test failures at NFS mounted locations. > * tests/test-rename.h (assert_nonexistent): Remove the old directory, > so that subsequent mkdir calls succeed. > > --- tests/test-rename.h.orig Sat Dec 25 15:20:33 2010 > +++ tests/test-rename.h Sat Dec 25 15:20:07 2010 > @@ -56,11 +56,16 @@ > if (stat (filename, &st) == -1) > ASSERT (errno == ENOENT); > else > - /* But after renaming a directory over an empty directory on an > NFS-mounted > - file system, on Linux 2.6.18, for a period of 30 seconds the old > - directory name is "present" according to stat() but "nonexistent" > - according to dentry_exists(). */ > - ASSERT (!dentry_exists (filename)); > + { > + /* But after renaming a directory over an empty directory on an NFS- > + mounted file system, on Linux 2.6.18, for a period of 30 seconds the > + old directory name is "present" according to stat() but > "nonexistent" > + according to dentry_exists(). */ > + ASSERT (!dentry_exists (filename)); > + /* Remove the old directory name, so that subsequent mkdir calls > + succeed. */ > + (void) rmdir (filename); > + } > }
Nice. Thanks for pursuing that.