]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - support/nfs/cacheio.c
Support group-id looks for kernels that ask for them.
[nfs-utils.git] / support / nfs / cacheio.c
index d7ad4293762f4b6dd583fec668cb0ea9df47b733..a76915bcf22992129efe3c1df9a25f83d44bfd70 100644 (file)
@@ -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,21 +247,25 @@ 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
        };
-       stb.st_mtime = time(0);
-       if (!force)
-               stat(_PATH_ETAB, &stb);
+       now = time(0);
+       if (force ||
+           stat(_PATH_ETAB, &stb) != 0 ||
+           stb.st_mtime > now)
+               stb.st_mtime = time(0);
        
        sprintf(stime, "%ld\n", stb.st_mtime);
        for (c=0; cachelist[c]; c++) {