diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
commit | 19fcec84d8d7d21e796c7624e521b60d28ee21ed (patch) | |
tree | 42d26aa27d1e3f7c0b8bd3fd14e7d7082f5008dc /src/os/FuseStore.h | |
parent | Initial commit. (diff) | |
download | ceph-upstream.tar.xz ceph-upstream.zip |
Adding upstream version 16.2.11+ds.upstream/16.2.11+dsupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | src/os/FuseStore.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/os/FuseStore.h b/src/os/FuseStore.h new file mode 100644 index 000000000..a3000d89d --- /dev/null +++ b/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 <string> +#include <map> +#include <mutex> +#include <functional> + +#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; + ceph::buffer::list bl; + bool dirty = false; + int ref = 0; + }; + std::map<std::string,OpenFile*> open_files; + + int open_file(std::string p, struct fuse_file_info *fi, + std::function<int(ceph::buffer::list *bl)> 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 |