]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - support/nfs/cacheio.c
release 1.0.7-pre2
[nfs-utils.git] / support / nfs / cacheio.c
index 77facb1eaccc7158dedef07f08db8c0bef448017..33231b01e1daae34cbff3933224b307978b7be37 100644 (file)
@@ -227,7 +227,8 @@ int
 check_new_cache(void)
 {
        struct stat stb;
-       return (stat("/proc/fs/nfs/filehandle", &stb) == 0);
+       return  (stat("/proc/fs/nfs/filehandle", &stb) == 0) ||
+               (stat("/proc/fs/nfsd/filehandle", &stb) == 0);
 }      
 
 
@@ -245,10 +246,16 @@ cache_flush(int force)
        int c;
        char stime[20];
        char path[200];
+       /* 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,
+        * as nfsd.fh entries reference items in nfsd.export,
+        * must be flushed before the cache that it references.
+        */
        static char *cachelist[] = {
                "auth.unix.ip",
-               "nfsd.export",
                "nfsd.fh",
+               "nfsd.export",
                NULL
        };
        stb.st_mtime = time(0);
@@ -260,7 +267,7 @@ cache_flush(int force)
                int fd;
                sprintf(path, "/proc/net/rpc/%s/flush", cachelist[c]);
                fd = open(path, O_RDWR);
-               if (fd) {
+               if (fd >= 0) {
                        write(fd, stime, strlen(stime));
                        close(fd);
                }