X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=support%2Fnfs%2Fcacheio.c;h=a76915bcf22992129efe3c1df9a25f83d44bfd70;hp=3e868d8843e9c9153be7ee595eec4517ec5cd5b4;hb=2bb403d1547790e731e5b151f9ef41880a6eb6c7;hpb=940c7c304d4a43c00c27529cdddc7c87db6eef87 diff --git a/support/nfs/cacheio.c b/support/nfs/cacheio.c index 3e868d8..a76915b 100644 --- a/support/nfs/cacheio.c +++ b/support/nfs/cacheio.c @@ -109,10 +109,10 @@ void qword_printint(FILE *f, int num) fprintf(f, "%d ", num); } -void qword_eol(FILE *f) +int qword_eol(FILE *f) { fprintf(f,"\n"); - fflush(f); + return fflush(f); } @@ -247,20 +247,24 @@ 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 + * They need to be flushed in dependancy order. So * a cache that references items in another cache, * as nfsd.fh entries reference items in nfsd.export, * must be flushed before the cache that it references. */ static char *cachelist[] = { "auth.unix.ip", + "auth.unix.gid", "nfsd.fh", "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);