summaryrefslogtreecommitdiffstats
path: root/support/nfs/cacheio.c
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2007-02-05 08:57:36 +1100
committerNeil Brown <neilb@suse.de>2007-02-05 08:57:36 +1100
commit2e0b281cbebd6624c2673f5e6822f85df698f273 (patch)
tree121da0d3e28a27f6e616525b54596ac754140845 /support/nfs/cacheio.c
parentdbeba43bd33ce41bc3c5c95615176e59eb76f00c (diff)
downloadnfs-utils-2e0b281cbebd6624c2673f5e6822f85df698f273.tar.gz
nfs-utils-2e0b281cbebd6624c2673f5e6822f85df698f273.tar.xz
nfs-utils-2e0b281cbebd6624c2673f5e6822f85df698f273.zip
Never set flushtime for a cache in the future.
If 'etab' happens to have a timestamp in the future, this will get copied to the flush-time for various caches, and no exports will work until that time arrives. So clamp the flushtime to 'now'.
Diffstat (limited to 'support/nfs/cacheio.c')
-rw-r--r--support/nfs/cacheio.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/support/nfs/cacheio.c b/support/nfs/cacheio.c
index 36473cf..a4bfedb 100644
--- a/support/nfs/cacheio.c
+++ b/support/nfs/cacheio.c
@@ -247,6 +247,7 @@ cache_flush(int force)
int c;
char stime[20];
char path[200];
+ time_t now;
/* Note: the order of these caches is important.
* The need to be flushed in dependancy order. So
* a cache that references items in another cache,
@@ -259,8 +260,10 @@ cache_flush(int force)
"nfsd.export",
NULL
};
+ now = time(0);
if (force ||
- stat(_PATH_ETAB, &stb) != 0)
+ stat(_PATH_ETAB, &stb) != 0 ||
+ stb.st_mtime > now)
stb.st_mtime = time(0);
sprintf(stime, "%ld\n", stb.st_mtime);