Loading lfs/CMakeLists.txt +2 −2 Original line number Diff line number Diff line Loading @@ -33,13 +33,13 @@ set(SOURCE_FILES src/main.cpp src/main.hpp src/fuse_ops.hpp src/configure.hpp src/adafs_ops/mdata_ops.hpp src/adafs_ops/dentry_ops.hpp src/adafs_ops/access.hpp src/db/db_ops.hpp src/db/util.hpp src/db/db_ops.hpp src/db/db_txn_ops.hpp src/db/util.hpp src/util.cpp src/fuse_ops/file.cpp src/fuse_ops/directory.cpp src/fuse_ops/sync.cpp src/fuse_ops/access.cpp src/adafs_ops/mdata_ops.cpp src/adafs_ops/dentry_ops.cpp src/adafs_ops/access.cpp src/db/db_ops.cpp src/db/util.cpp src/db/db_ops.cpp src/db/db_txn_ops.cpp src/db/util.cpp ) add_executable(adafs ${SOURCE_FILES} src/main.cpp) Loading lfs/src/adafs_ops/mdata_ops.cpp +27 −15 Original line number Diff line number Diff line Loading @@ -11,18 +11,27 @@ using namespace std; int write_all_metadata(const Metadata& md, const fuse_ino_t inode) { auto inode_key = fmt::FormatInt(inode).str(); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::atime)>(md_field_map)), md.atime()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::mtime)>(md_field_map)), md.mtime()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::ctime)>(md_field_map)), md.ctime()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::uid)>(md_field_map)), md.uid()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::gid)>(md_field_map)), md.gid()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::mode)>(md_field_map)), md.mode()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::inode_no)>(md_field_map)), md.inode_no()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::link_count)>(md_field_map)), md.link_count()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::size)>(md_field_map)), md.size()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::blocks)>(md_field_map)), md.blocks()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::atime)>(md_field_map)), md.atime()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::mtime)>(md_field_map)), md.mtime()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::ctime)>(md_field_map)), md.ctime()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::uid)>(md_field_map)), md.uid()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::gid)>(md_field_map)), md.gid()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::mode)>(md_field_map)), md.mode()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::inode_no)>(md_field_map)), md.inode_no()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::link_count)>(md_field_map)), md.link_count()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::size)>(md_field_map)), md.size()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::blocks)>(md_field_map)), md.blocks()); return 0; } Loading @@ -36,15 +45,18 @@ int read_all_metadata(Metadata& md, const fuse_ino_t inode) { db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::mtime)>(md_field_map)))); md.ctime(db_get_mdata<time_t>( db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::ctime)>(md_field_map)))); md.uid(db_get_mdata<uid_t>(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::uid)>(md_field_map)))); md.gid(db_get_mdata<gid_t>(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::gid)>(md_field_map)))); md.uid(db_get_mdata<uid_t>( db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::uid)>(md_field_map)))); md.gid(db_get_mdata<gid_t>( db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::gid)>(md_field_map)))); md.mode(db_get_mdata<mode_t>( db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::mode)>(md_field_map)))); md.inode_no(db_get_mdata<fuse_ino_t>( db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::inode_no)>(md_field_map)))); md.link_count(db_get_mdata<nlink_t>( db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::link_count)>(md_field_map)))); md.size(db_get_mdata<off_t>(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::size)>(md_field_map)))); md.size(db_get_mdata<off_t>( db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::size)>(md_field_map)))); md.blocks(db_get_mdata<blkcnt_t>( db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::blocks)>(md_field_map)))); return 0; Loading lfs/src/adafs_ops/mdata_ops.hpp +1 −12 Original line number Diff line number Diff line Loading @@ -8,22 +8,11 @@ #include "../main.hpp" #include "../classes/metadata.h" #include "../db/db_ops.hpp" #include "../db/db_txn_ops.hpp" #include "../db/util.hpp" using namespace std; //template <typename E> //constexpr typename std::underlying_type<E>::type to_underlying(E e) { // return static_cast<typename std::underlying_type<E>::type>(e); //} // //// mapping of enum to string to get the db_keys for metadata //enum class Md_fields { atime, mtime, ctime, uid, gid, mode, inode_no, link_count, size, blocks }; // //const std::array<std::string, 10> md_field_map = { // "_atime"s, "_mtime"s, "_ctime"s, "_uid"s, "_gid"s, "_mode"s, "_inodeno"s, "_lnkcnt"s, "_size"s, "_blkcnt"s //}; int write_all_metadata(const Metadata& md, const fuse_ino_t inode); int read_all_metadata(Metadata& md, const fuse_ino_t inode); Loading lfs/src/classes/fs_data.cpp +24 −8 Original line number Diff line number Diff line Loading @@ -76,14 +76,6 @@ void FsData::mgmt_path(const std::string& mgmt_path_) { FsData::mgmt_path_ = mgmt_path_; } //rocksdb::DB* FsData::rdb() { // return rdb_; //} // //void FsData::rdb(rocksdb::DB* rdb_) { // FsData::rdb_ = rdb_; //} const rocksdb::Options& FsData::rdb_options() const { return rdb_options_; } Loading @@ -108,3 +100,27 @@ void FsData::rdb(const std::shared_ptr<rocksdb::DB>& rdb) { FsData::rdb_ = rdb; } const std::shared_ptr<rocksdb::OptimisticTransactionDB>& FsData::txn_rdb() const { return txn_rdb_; } void FsData::txn_rdb(const std::shared_ptr<rocksdb::OptimisticTransactionDB>& tx_rdb) { FsData::txn_rdb_ = tx_rdb; } const std::shared_ptr<rocksdb::DB>& FsData::rdb_crt() const { return rdb_crt_; } void FsData::rdb_crt(const std::shared_ptr<rocksdb::DB>& rdb_crt) { FsData::rdb_crt_ = rdb_crt; } const rocksdb::OptimisticTransactionOptions& FsData::txn_rdb_options() const { return txn_rdb_options_; } void FsData::txn_rdb_options(const rocksdb::OptimisticTransactionOptions& tx_rdb_options) { FsData::txn_rdb_options_ = tx_rdb_options; } lfs/src/classes/fs_data.h +16 −6 Original line number Diff line number Diff line Loading @@ -30,9 +30,11 @@ private: std::string mgmt_path_; // rocksdb // rocksdb::DB* rdb_; std::shared_ptr<rocksdb::DB> rdb_; //single rocksdb instance std::shared_ptr<rocksdb::DB> rdb_; std::shared_ptr<rocksdb::DB> rdb_crt_; // additional db instance (currently not used) std::shared_ptr<rocksdb::OptimisticTransactionDB> txn_rdb_; rocksdb::Options rdb_options_; rocksdb::OptimisticTransactionOptions txn_rdb_options_; // needed for snapshots std::string rdb_path_; public: Loading Loading @@ -82,10 +84,6 @@ public: void mgmt_path(const std::string& mgmt_path_); // rocksdb::DB* rdb(); // // void rdb(rocksdb::DB* rdb_); const std::shared_ptr<rocksdb::DB>& rdb() const; void rdb(const std::shared_ptr<rocksdb::DB>& rdb); Loading @@ -98,6 +96,18 @@ public: void rdb_path(const std::string& rdb_path); const std::shared_ptr<rocksdb::OptimisticTransactionDB>& txn_rdb() const; void txn_rdb(const std::shared_ptr<rocksdb::OptimisticTransactionDB>& tx_rdb); const std::shared_ptr<rocksdb::DB>& rdb_crt() const; void rdb_crt(const std::shared_ptr<rocksdb::DB>& rdb_crt); const rocksdb::OptimisticTransactionOptions& txn_rdb_options() const; void txn_rdb_options(const rocksdb::OptimisticTransactionOptions& tx_rdb_options); }; Loading Loading
lfs/CMakeLists.txt +2 −2 Original line number Diff line number Diff line Loading @@ -33,13 +33,13 @@ set(SOURCE_FILES src/main.cpp src/main.hpp src/fuse_ops.hpp src/configure.hpp src/adafs_ops/mdata_ops.hpp src/adafs_ops/dentry_ops.hpp src/adafs_ops/access.hpp src/db/db_ops.hpp src/db/util.hpp src/db/db_ops.hpp src/db/db_txn_ops.hpp src/db/util.hpp src/util.cpp src/fuse_ops/file.cpp src/fuse_ops/directory.cpp src/fuse_ops/sync.cpp src/fuse_ops/access.cpp src/adafs_ops/mdata_ops.cpp src/adafs_ops/dentry_ops.cpp src/adafs_ops/access.cpp src/db/db_ops.cpp src/db/util.cpp src/db/db_ops.cpp src/db/db_txn_ops.cpp src/db/util.cpp ) add_executable(adafs ${SOURCE_FILES} src/main.cpp) Loading
lfs/src/adafs_ops/mdata_ops.cpp +27 −15 Original line number Diff line number Diff line Loading @@ -11,18 +11,27 @@ using namespace std; int write_all_metadata(const Metadata& md, const fuse_ino_t inode) { auto inode_key = fmt::FormatInt(inode).str(); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::atime)>(md_field_map)), md.atime()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::mtime)>(md_field_map)), md.mtime()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::ctime)>(md_field_map)), md.ctime()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::uid)>(md_field_map)), md.uid()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::gid)>(md_field_map)), md.gid()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::mode)>(md_field_map)), md.mode()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::inode_no)>(md_field_map)), md.inode_no()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::link_count)>(md_field_map)), md.link_count()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::size)>(md_field_map)), md.size()); db_put_mdata(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::blocks)>(md_field_map)), md.blocks()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::atime)>(md_field_map)), md.atime()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::mtime)>(md_field_map)), md.mtime()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::ctime)>(md_field_map)), md.ctime()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::uid)>(md_field_map)), md.uid()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::gid)>(md_field_map)), md.gid()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::mode)>(md_field_map)), md.mode()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::inode_no)>(md_field_map)), md.inode_no()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::link_count)>(md_field_map)), md.link_count()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::size)>(md_field_map)), md.size()); db_put_mdata(db_build_mdata_key( inode_key, std::get<to_underlying(Md_fields::blocks)>(md_field_map)), md.blocks()); return 0; } Loading @@ -36,15 +45,18 @@ int read_all_metadata(Metadata& md, const fuse_ino_t inode) { db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::mtime)>(md_field_map)))); md.ctime(db_get_mdata<time_t>( db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::ctime)>(md_field_map)))); md.uid(db_get_mdata<uid_t>(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::uid)>(md_field_map)))); md.gid(db_get_mdata<gid_t>(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::gid)>(md_field_map)))); md.uid(db_get_mdata<uid_t>( db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::uid)>(md_field_map)))); md.gid(db_get_mdata<gid_t>( db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::gid)>(md_field_map)))); md.mode(db_get_mdata<mode_t>( db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::mode)>(md_field_map)))); md.inode_no(db_get_mdata<fuse_ino_t>( db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::inode_no)>(md_field_map)))); md.link_count(db_get_mdata<nlink_t>( db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::link_count)>(md_field_map)))); md.size(db_get_mdata<off_t>(db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::size)>(md_field_map)))); md.size(db_get_mdata<off_t>( db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::size)>(md_field_map)))); md.blocks(db_get_mdata<blkcnt_t>( db_build_mdata_key(inode_key, std::get<to_underlying(Md_fields::blocks)>(md_field_map)))); return 0; Loading
lfs/src/adafs_ops/mdata_ops.hpp +1 −12 Original line number Diff line number Diff line Loading @@ -8,22 +8,11 @@ #include "../main.hpp" #include "../classes/metadata.h" #include "../db/db_ops.hpp" #include "../db/db_txn_ops.hpp" #include "../db/util.hpp" using namespace std; //template <typename E> //constexpr typename std::underlying_type<E>::type to_underlying(E e) { // return static_cast<typename std::underlying_type<E>::type>(e); //} // //// mapping of enum to string to get the db_keys for metadata //enum class Md_fields { atime, mtime, ctime, uid, gid, mode, inode_no, link_count, size, blocks }; // //const std::array<std::string, 10> md_field_map = { // "_atime"s, "_mtime"s, "_ctime"s, "_uid"s, "_gid"s, "_mode"s, "_inodeno"s, "_lnkcnt"s, "_size"s, "_blkcnt"s //}; int write_all_metadata(const Metadata& md, const fuse_ino_t inode); int read_all_metadata(Metadata& md, const fuse_ino_t inode); Loading
lfs/src/classes/fs_data.cpp +24 −8 Original line number Diff line number Diff line Loading @@ -76,14 +76,6 @@ void FsData::mgmt_path(const std::string& mgmt_path_) { FsData::mgmt_path_ = mgmt_path_; } //rocksdb::DB* FsData::rdb() { // return rdb_; //} // //void FsData::rdb(rocksdb::DB* rdb_) { // FsData::rdb_ = rdb_; //} const rocksdb::Options& FsData::rdb_options() const { return rdb_options_; } Loading @@ -108,3 +100,27 @@ void FsData::rdb(const std::shared_ptr<rocksdb::DB>& rdb) { FsData::rdb_ = rdb; } const std::shared_ptr<rocksdb::OptimisticTransactionDB>& FsData::txn_rdb() const { return txn_rdb_; } void FsData::txn_rdb(const std::shared_ptr<rocksdb::OptimisticTransactionDB>& tx_rdb) { FsData::txn_rdb_ = tx_rdb; } const std::shared_ptr<rocksdb::DB>& FsData::rdb_crt() const { return rdb_crt_; } void FsData::rdb_crt(const std::shared_ptr<rocksdb::DB>& rdb_crt) { FsData::rdb_crt_ = rdb_crt; } const rocksdb::OptimisticTransactionOptions& FsData::txn_rdb_options() const { return txn_rdb_options_; } void FsData::txn_rdb_options(const rocksdb::OptimisticTransactionOptions& tx_rdb_options) { FsData::txn_rdb_options_ = tx_rdb_options; }
lfs/src/classes/fs_data.h +16 −6 Original line number Diff line number Diff line Loading @@ -30,9 +30,11 @@ private: std::string mgmt_path_; // rocksdb // rocksdb::DB* rdb_; std::shared_ptr<rocksdb::DB> rdb_; //single rocksdb instance std::shared_ptr<rocksdb::DB> rdb_; std::shared_ptr<rocksdb::DB> rdb_crt_; // additional db instance (currently not used) std::shared_ptr<rocksdb::OptimisticTransactionDB> txn_rdb_; rocksdb::Options rdb_options_; rocksdb::OptimisticTransactionOptions txn_rdb_options_; // needed for snapshots std::string rdb_path_; public: Loading Loading @@ -82,10 +84,6 @@ public: void mgmt_path(const std::string& mgmt_path_); // rocksdb::DB* rdb(); // // void rdb(rocksdb::DB* rdb_); const std::shared_ptr<rocksdb::DB>& rdb() const; void rdb(const std::shared_ptr<rocksdb::DB>& rdb); Loading @@ -98,6 +96,18 @@ public: void rdb_path(const std::string& rdb_path); const std::shared_ptr<rocksdb::OptimisticTransactionDB>& txn_rdb() const; void txn_rdb(const std::shared_ptr<rocksdb::OptimisticTransactionDB>& tx_rdb); const std::shared_ptr<rocksdb::DB>& rdb_crt() const; void rdb_crt(const std::shared_ptr<rocksdb::DB>& rdb_crt); const rocksdb::OptimisticTransactionOptions& txn_rdb_options() const; void txn_rdb_options(const rocksdb::OptimisticTransactionOptions& tx_rdb_options); }; Loading