From d58fbf8ca4a9a72ad8d72c7a6a4d765b419122f6 Mon Sep 17 00:00:00 2001 From: Michael Forney Date: Sun, 5 Jun 2016 17:13:58 -0700 Subject: [PATCH] Add nocache.c stub --- nocache.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 nocache.c diff --git a/nocache.c b/nocache.c new file mode 100644 index 0000000..58d7528 --- /dev/null +++ b/nocache.c @@ -0,0 +1,94 @@ +#include "cache.h" + +struct cache { + struct fuse_cache_operations *next_oper; +}; + +static struct cache cache; + +struct fuse_cache_dirhandle { + fuse_dirh_t h; + fuse_dirfil_t filler; +}; + +void cache_invalidate(const char *path) +{ +} + +void cache_add_attr(const char *path, const struct stat *stbuf, uint64_t wrctr) +{ +} + +uint64_t cache_get_write_ctr(void) +{ + return 0; +} + +static int cache_unity_dirfill(fuse_cache_dirh_t ch, const char *name, + const struct stat *stbuf) +{ + (void) stbuf; + return ch->filler(ch->h, name, 0, 0); +} + +static int cache_unity_getdir(const char *path, fuse_dirh_t h, + fuse_dirfil_t filler) +{ + struct fuse_cache_dirhandle ch; + ch.h = h; + ch.filler = filler; + return cache.next_oper->cache_getdir(path, &ch, cache_unity_dirfill); +} + +static void cache_unity_fill(struct fuse_cache_operations *oper, + struct fuse_operations *cache_oper) +{ +#if FUSE_VERSION >= 23 + cache_oper->init = oper->oper.init; +#endif + cache_oper->getattr = oper->oper.getattr; + cache_oper->access = oper->oper.access; + cache_oper->readlink = oper->oper.readlink; + cache_oper->getdir = cache_unity_getdir; + cache_oper->mknod = oper->oper.mknod; + cache_oper->mkdir = oper->oper.mkdir; + cache_oper->symlink = oper->oper.symlink; + cache_oper->unlink = oper->oper.unlink; + cache_oper->rmdir = oper->oper.rmdir; + cache_oper->rename = oper->oper.rename; + cache_oper->link = oper->oper.link; + cache_oper->chmod = oper->oper.chmod; + cache_oper->chown = oper->oper.chown; + cache_oper->truncate = oper->oper.truncate; + cache_oper->utime = oper->oper.utime; + cache_oper->open = oper->oper.open; + cache_oper->read = oper->oper.read; + cache_oper->write = oper->oper.write; + cache_oper->flush = oper->oper.flush; + cache_oper->release = oper->oper.release; + cache_oper->fsync = oper->oper.fsync; + cache_oper->statfs = oper->oper.statfs; + cache_oper->setxattr = oper->oper.setxattr; + cache_oper->getxattr = oper->oper.getxattr; + cache_oper->listxattr = oper->oper.listxattr; + cache_oper->removexattr = oper->oper.removexattr; +#if FUSE_VERSION >= 25 + cache_oper->create = oper->oper.create; + cache_oper->ftruncate = oper->oper.ftruncate; + cache_oper->fgetattr = oper->oper.fgetattr; +#endif +} + +struct fuse_operations *cache_init(struct fuse_cache_operations *oper) +{ + static struct fuse_operations cache_oper; + cache.next_oper = oper; + + cache_unity_fill(oper, &cache_oper); + return &cache_oper; +} + +int cache_parse_options(struct fuse_args *args) +{ + return 0; +} -- 2.9.0