diff options
author | neilbrown <neilbrown> | 2003-05-21 06:44:50 +0000 |
---|---|---|
committer | neilbrown <neilbrown> | 2003-05-21 06:44:50 +0000 |
commit | 2d33968c66860ad772aac918992986fe4865b3a4 (patch) | |
tree | 63ee30068747c3c2803b972fcd46eeb8d9d88d8b /support/nfs/cacheio.c | |
parent | 1275be70ca6cd6c4bec07a3381f7b510086c5526 (diff) | |
download | nfs-utils-2d33968c66860ad772aac918992986fe4865b3a4.tar.gz nfs-utils-2d33968c66860ad772aac918992986fe4865b3a4.tar.xz nfs-utils-2d33968c66860ad772aac918992986fe4865b3a4.zip |
enhance exportfs to use new cache/upcall stuff
Diffstat (limited to 'support/nfs/cacheio.c')
-rw-r--r-- | support/nfs/cacheio.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/support/nfs/cacheio.c b/support/nfs/cacheio.c index 2af4fa3..77facb1 100644 --- a/support/nfs/cacheio.c +++ b/support/nfs/cacheio.c @@ -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); + } + } +} |