summaryrefslogtreecommitdiff
path: root/support
diff options
context:
space:
mode:
Diffstat (limited to 'support')
-rw-r--r--support/export/auth.c2
-rw-r--r--support/include/nfslib.h2
-rw-r--r--support/nfs/cacheio.c17
3 files changed, 10 insertions, 11 deletions
diff --git a/support/export/auth.c b/support/export/auth.c
index cea3763..17bdfc8 100644
--- a/support/export/auth.c
+++ b/support/export/auth.c
@@ -80,7 +80,7 @@ check_useipaddr(void)
use_ipaddr = 0;
if (use_ipaddr != old_use_ipaddr)
- cache_flush(1);
+ cache_flush();
}
unsigned int
diff --git a/support/include/nfslib.h b/support/include/nfslib.h
index 84d8270..58eeb33 100644
--- a/support/include/nfslib.h
+++ b/support/include/nfslib.h
@@ -132,7 +132,7 @@ int wildmat(char *text, char *pattern);
int qword_get(char **bpp, char *dest, int bufsize);
int qword_get_int(char **bpp, int *anint);
-void cache_flush(int force);
+void cache_flush(void);
void qword_add(char **bpp, int *lp, char *str);
void qword_addhex(char **bpp, int *lp, char *buf, int blen);
void qword_addint(char **bpp, int *lp, int n);
diff --git a/support/nfs/cacheio.c b/support/nfs/cacheio.c
index 70ead94..73f4be4 100644
--- a/support/nfs/cacheio.c
+++ b/support/nfs/cacheio.c
@@ -32,8 +32,6 @@
#include <time.h>
#include <errno.h>
-extern struct state_paths etab;
-
void qword_add(char **bpp, int *lp, char *str)
{
char *bp = *bpp;
@@ -213,7 +211,7 @@ int qword_get_uint(char **bpp, unsigned int *anint)
*/
void
-cache_flush(int force)
+cache_flush(void)
{
struct stat stb;
int c;
@@ -234,12 +232,13 @@ cache_flush(int force)
NULL
};
now = time(0);
- if (force ||
- stat(etab.statefn, &stb) != 0 ||
- stb.st_mtime > now)
- stb.st_mtime = time(0);
-
- sprintf(stime, "%" PRId64 "\n", (int64_t)stb.st_mtime);
+
+ /* Since v4.16-rc2-3-g3b68e6ee3cbd the timestamp written is ignored.
+ * It is safest always to flush caches if there is any doubt.
+ * For earlier kernels, writing the next second from now is
+ * the best we can do.
+ */
+ sprintf(stime, "%" PRId64 "\n", (int64_t)now+1);
for (c=0; cachelist[c]; c++) {
int fd;
sprintf(path, "/proc/net/rpc/%s/flush", cachelist[c]);