]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - support/nfs/cacheio.c
enhance exportfs to use new cache/upcall stuff
[nfs-utils.git] / support / nfs / cacheio.c
index 2af4fa3e3e8ce58b319c06cbb0253f2aca792221..77facb1eaccc7158dedef07f08db8c0bef448017 100644 (file)
@@ -230,3 +230,39 @@ check_new_cache(void)
        return (stat("/proc/fs/nfs/filehandle", &stb) == 0);
 }      
 
+
+/* flush the kNFSd caches.
+ * Set the flush time to the mtime of _PATH_ETAB or
+ * if force, to now.
+ * the caches to flush are:
+ *  auth.unix.ip nfsd.export nfsd.fh
+ */
+
+void
+cache_flush(int force)
+{
+       struct stat stb;
+       int c;
+       char stime[20];
+       char path[200];
+       static char *cachelist[] = {
+               "auth.unix.ip",
+               "nfsd.export",
+               "nfsd.fh",
+               NULL
+       };
+       stb.st_mtime = time(0);
+       if (!force)
+               stat(_PATH_ETAB, &stb);
+       
+       sprintf(stime, "%ld\n", stb.st_mtime);
+       for (c=0; cachelist[c]; c++) {
+               int fd;
+               sprintf(path, "/proc/net/rpc/%s/flush", cachelist[c]);
+               fd = open(path, O_RDWR);
+               if (fd) {
+                       write(fd, stime, strlen(stime));
+                       close(fd);
+               }
+       }
+}