X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Fos%2FFuseStore.h;fp=src%2Fceph%2Fsrc%2Fos%2FFuseStore.h;h=db39ca5ef40df3d2b999e06390d8f3f94d878350;hb=812ff6ca9fcd3e629e49d4328905f33eee8ca3f5;hp=0000000000000000000000000000000000000000;hpb=15280273faafb77777eab341909a3f495cf248d9;p=stor4nfv.git diff --git a/src/ceph/src/os/FuseStore.h b/src/ceph/src/os/FuseStore.h new file mode 100644 index 0000000..db39ca5 --- /dev/null +++ b/src/ceph/src/os/FuseStore.h @@ -0,0 +1,54 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#ifndef CEPH_OS_FUSESTORE_H +#define CEPH_OS_FUSESTORE_H + +#include +#include +#include +#include + +#include "common/Thread.h" +#include "include/buffer.h" + +class ObjectStore; + +class FuseStore { +public: + ObjectStore *store; + std::string mount_point; + struct fs_info *info; + std::mutex lock; + + struct OpenFile { + std::string path; + bufferlist bl; + bool dirty = false; + int ref = 0; + }; + std::map open_files; + + int open_file(std::string p, struct fuse_file_info *fi, + std::function f); + + class FuseThread : public Thread { + FuseStore *fs; + public: + explicit FuseThread(FuseStore *f) : fs(f) {} + void *entry() override { + fs->loop(); + return NULL; + } + } fuse_thread; + + FuseStore(ObjectStore *s, std::string p); + ~FuseStore(); + + int main(); + int start(); + int loop(); + int stop(); +}; + +#endif