Mercurial > gnulib
changeset 27403:c46a59853fb5
* lib/utimens.c (futimens) [HAVE_BUGGY_NFS_TIME_STAMPS]: Add a
workaround for this case. It is not autoconfigured now; offhand
it's hard to see how to autoconfigure it.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Tue, 05 Dec 2006 18:09:17 +0000 |
parents | 929259685713 |
children | 5a4ff089a7d4 |
files | ChangeLog lib/utimens.c |
diffstat | 2 files changed, 23 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Mon Dec 04 07:23:36 2006 +0000 +++ b/ChangeLog Tue Dec 05 18:09:17 2006 +0000 @@ -1,3 +1,9 @@ +2006-12-05 Paul Eggert <eggert@cs.ucla.edu> + + * lib/utimens.c (futimens) [HAVE_BUGGY_NFS_TIME_STAMPS]: Add a + workaround for this case. It is not autoconfigured now; offhand + it's hard to see how to autoconfigure it. + 2006-12-03 Paul Eggert <eggert@cs.ucla.edu> * lib/mkdir-p.c (make_dir_parents): Fix race condition when making
--- a/lib/utimens.c Mon Dec 04 07:23:36 2006 +0000 +++ b/lib/utimens.c Tue Dec 05 18:09:17 2006 +0000 @@ -76,6 +76,23 @@ futimens (int fd ATTRIBUTE_UNUSED, char const *file, struct timespec const timespec[2]) { + /* Some Linux-based NFS clients are buggy, and mishandle time stamps + of files in NFS file systems in some cases. We have no + configure-time test for this, but please see + <http://bugs.gentoo.org/show_bug.cgi?id=132673> for references to + some of the problems with Linux 2.6.16. If this affects you, + compile with -DHAVE_BUGGY_NFS_TIME_STAMPS; this is reported to + help in some cases, albeit at a cost in performance. But you + really should upgrade your kernel to a fixed version, since the + problem affects many applications. */ + +#if HAVE_BUGGY_NFS_TIME_STAMPS + if (0 <= fd) + fsync (fd); + else + sync (); +#endif + /* There's currently no interface to set file timestamps with nanosecond resolution, so do the best we can, discarding any fractional part of the timestamp. */