Loading lfs/CMakeLists.txt +2 −2 Original line number Diff line number Diff line Loading @@ -31,11 +31,11 @@ set(SOURCE_FILES src/main.cpp src/main.hpp src/fuse_ops.hpp src/configure.hpp src/classes/metadata.h src/classes/metadata.cpp src/classes/fs_data.h src/classes/fs_data.cpp src/classes/dentry.h src/classes/dentry.cpp src/adafs_ops/mdata_ops.hpp src/adafs_ops/dentry_ops.hpp src/adafs_ops/access.hpp src/adafs_ops/mdata_ops.hpp src/adafs_ops/dentry_ops.hpp src/adafs_ops/access.hpp src/adafs_ops/db_ops.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/adafs_ops/mdata_ops.cpp src/adafs_ops/dentry_ops.cpp src/adafs_ops/access.cpp src/adafs_ops/db_ops.cpp ) add_executable(adafs ${SOURCE_FILES} src/main.cpp) Loading lfs/src/adafs_ops/db_ops.cpp 0 → 100644 +20 −0 Original line number Diff line number Diff line // // Created by evie on 6/6/17. // #include "db_ops.hpp" using namespace rocksdb; using namespace std; bool db_put(const string key, const time_t val) { auto db = ADAFS_DATA->rdb().get(); return db->Put(WriteOptions(), key, fmt::FormatInt(val).c_str()).ok(); } time_t db_get(const string key) { auto db = ADAFS_DATA->rdb().get(); string val_s; db->Get(ReadOptions(), key, &val_s); return static_cast<time_t>(stol(val_s)); } No newline at end of file lfs/src/adafs_ops/db_ops.hpp 0 → 100644 +15 −0 Original line number Diff line number Diff line // // Created by evie on 6/6/17. // #ifndef LFS_DB_OPS_HPP #define LFS_DB_OPS_HPP #include "../main.hpp" bool db_put(const std::string key, const time_t val); time_t db_get(const std::string key); #endif //LFS_DB_OPS_HPP lfs/src/adafs_ops/mdata_ops.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ // TODO error handling. Each read_metadata_field should check for boolean, i.e., if I/O failed. bool write_all_metadata(const Metadata& md, const fuse_ino_t inode) { db_put(fmt::FormatInt(inode).str(), md.atime()); write_metadata_field(md.atime(), std::get<to_underlying(Md_fields::atime)>(md_field_map), inode); write_metadata_field(md.mtime(), std::get<to_underlying(Md_fields::mtime)>(md_field_map), inode); write_metadata_field(md.ctime(), std::get<to_underlying(Md_fields::ctime)>(md_field_map), inode); Loading @@ -25,6 +26,7 @@ bool write_all_metadata(const Metadata& md, const fuse_ino_t inode) { // TODO error handling. Each read_metadata_field should check for nullptr, i.e., if I/O failed. bool read_all_metadata(Metadata& md, const fuse_ino_t inode) { auto re = db_get(fmt::FormatInt(inode).str()); md.atime(*read_metadata_field<time_t>(std::get<to_underlying(Md_fields::atime)>(md_field_map), inode)); md.mtime(*read_metadata_field<time_t>(std::get<to_underlying(Md_fields::mtime)>(md_field_map), inode)); md.ctime(*read_metadata_field<time_t>(std::get<to_underlying(Md_fields::ctime)>(md_field_map), inode)); Loading lfs/src/adafs_ops/mdata_ops.hpp +1 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ #include "../main.hpp" #include "../classes/metadata.h" #include "db_ops.hpp" #include <boost/archive/binary_iarchive.hpp> #include <boost/archive/binary_oarchive.hpp> Loading Loading
lfs/CMakeLists.txt +2 −2 Original line number Diff line number Diff line Loading @@ -31,11 +31,11 @@ set(SOURCE_FILES src/main.cpp src/main.hpp src/fuse_ops.hpp src/configure.hpp src/classes/metadata.h src/classes/metadata.cpp src/classes/fs_data.h src/classes/fs_data.cpp src/classes/dentry.h src/classes/dentry.cpp src/adafs_ops/mdata_ops.hpp src/adafs_ops/dentry_ops.hpp src/adafs_ops/access.hpp src/adafs_ops/mdata_ops.hpp src/adafs_ops/dentry_ops.hpp src/adafs_ops/access.hpp src/adafs_ops/db_ops.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/adafs_ops/mdata_ops.cpp src/adafs_ops/dentry_ops.cpp src/adafs_ops/access.cpp src/adafs_ops/db_ops.cpp ) add_executable(adafs ${SOURCE_FILES} src/main.cpp) Loading
lfs/src/adafs_ops/db_ops.cpp 0 → 100644 +20 −0 Original line number Diff line number Diff line // // Created by evie on 6/6/17. // #include "db_ops.hpp" using namespace rocksdb; using namespace std; bool db_put(const string key, const time_t val) { auto db = ADAFS_DATA->rdb().get(); return db->Put(WriteOptions(), key, fmt::FormatInt(val).c_str()).ok(); } time_t db_get(const string key) { auto db = ADAFS_DATA->rdb().get(); string val_s; db->Get(ReadOptions(), key, &val_s); return static_cast<time_t>(stol(val_s)); } No newline at end of file
lfs/src/adafs_ops/db_ops.hpp 0 → 100644 +15 −0 Original line number Diff line number Diff line // // Created by evie on 6/6/17. // #ifndef LFS_DB_OPS_HPP #define LFS_DB_OPS_HPP #include "../main.hpp" bool db_put(const std::string key, const time_t val); time_t db_get(const std::string key); #endif //LFS_DB_OPS_HPP
lfs/src/adafs_ops/mdata_ops.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ // TODO error handling. Each read_metadata_field should check for boolean, i.e., if I/O failed. bool write_all_metadata(const Metadata& md, const fuse_ino_t inode) { db_put(fmt::FormatInt(inode).str(), md.atime()); write_metadata_field(md.atime(), std::get<to_underlying(Md_fields::atime)>(md_field_map), inode); write_metadata_field(md.mtime(), std::get<to_underlying(Md_fields::mtime)>(md_field_map), inode); write_metadata_field(md.ctime(), std::get<to_underlying(Md_fields::ctime)>(md_field_map), inode); Loading @@ -25,6 +26,7 @@ bool write_all_metadata(const Metadata& md, const fuse_ino_t inode) { // TODO error handling. Each read_metadata_field should check for nullptr, i.e., if I/O failed. bool read_all_metadata(Metadata& md, const fuse_ino_t inode) { auto re = db_get(fmt::FormatInt(inode).str()); md.atime(*read_metadata_field<time_t>(std::get<to_underlying(Md_fields::atime)>(md_field_map), inode)); md.mtime(*read_metadata_field<time_t>(std::get<to_underlying(Md_fields::mtime)>(md_field_map), inode)); md.ctime(*read_metadata_field<time_t>(std::get<to_underlying(Md_fields::ctime)>(md_field_map), inode)); Loading
lfs/src/adafs_ops/mdata_ops.hpp +1 −0 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ #include "../main.hpp" #include "../classes/metadata.h" #include "db_ops.hpp" #include <boost/archive/binary_iarchive.hpp> #include <boost/archive/binary_oarchive.hpp> Loading