From e79ca436ed76c5537508f3901d7fefdc67412220 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 5 Dec 2006 18:09:17 +0000 Subject: [PATCH] * 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. --- ChangeLog | 6 ++++++ lib/utimens.c | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/ChangeLog b/ChangeLog index b6d4c6b72..90002e71e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-12-05 Paul Eggert + + * 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 * lib/mkdir-p.c (make_dir_parents): Fix race condition when making diff --git a/lib/utimens.c b/lib/utimens.c index e3daaf3f5..e72b84046 100644 --- a/lib/utimens.c +++ b/lib/utimens.c @@ -76,6 +76,23 @@ int 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 + 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. */ -- 2.11.0