Loading lfs/src/adafs_ops/db_ops.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ // #include "db_ops.hpp" #include "mdata_ops.hpp" using namespace rocksdb; Loading Loading @@ -41,10 +42,12 @@ bool db_dentry_exists(const fuse_ino_t p_inode, const string& name, string& val) return db->Get(rocksdb::ReadOptions(), key, &val).ok(); } bool db_mdata_exists(const string& key) { bool db_mdata_exists(const fuse_ino_t inode) { auto db = ADAFS_DATA->rdb().get(); string val_str; return db->Get(ReadOptions(), key, &val_str).ok(); return db->Get(ReadOptions(), fmt::FormatInt(inode).str() + std::get<to_underlying(Md_fields::atime)>(md_field_map), &val_str).ok(); } bool db_put_dentry(const string& key, const string& val) { Loading lfs/src/adafs_ops/db_ops.hpp +1 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ T db_get_mdata(const std::string& key); bool db_dentry_exists(const fuse_ino_t p_inode, const std::string& name, std::string& val); bool db_mdata_exists(const std::string& key); bool db_mdata_exists(const fuse_ino_t inode); bool db_put_dentry(const std::string& key, const std::string& val); Loading lfs/src/adafs_ops/mdata_ops.cpp +21 −21 Original line number Diff line number Diff line Loading @@ -11,16 +11,16 @@ bool write_all_metadata(const Metadata& md, const fuse_ino_t inode) { auto inode_key = fmt::FormatInt(inode).str(); db_put_mdata(inode_key + "atime"s, md.atime()); db_put_mdata(inode_key + "mtime"s, md.mtime()); db_put_mdata(inode_key + "ctime"s, md.ctime()); db_put_mdata(inode_key + "uid"s, md.uid()); db_put_mdata(inode_key + "gid"s, md.gid()); db_put_mdata(inode_key + "mode"s, md.mode()); db_put_mdata(inode_key + "inodeno"s, md.inode_no()); db_put_mdata(inode_key + "linkcnt"s, md.link_count()); db_put_mdata(inode_key + "size"s, md.size()); db_put_mdata(inode_key + "blocks"s, md.blocks()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::atime)>(md_field_map), md.atime()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::mtime)>(md_field_map), md.mtime()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::ctime)>(md_field_map), md.ctime()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::uid)>(md_field_map), md.uid()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::gid)>(md_field_map), md.gid()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::mode)>(md_field_map), md.mode()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::inode_no)>(md_field_map), md.inode_no()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::link_count)>(md_field_map), md.link_count()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::size)>(md_field_map), md.size()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::blocks)>(md_field_map), md.blocks()); return true; } Loading @@ -28,16 +28,16 @@ bool write_all_metadata(const Metadata& md, const fuse_ino_t inode) { bool read_all_metadata(Metadata& md, const fuse_ino_t inode) { auto inode_key = fmt::FormatInt(inode).str(); md.atime(db_get_mdata<time_t>(inode_key + "atime"s)); md.mtime(db_get_mdata<time_t>(inode_key + "mtime"s)); md.ctime(db_get_mdata<time_t>(inode_key + "ctime"s)); md.uid(db_get_mdata<uid_t>(inode_key + "uid"s)); md.gid(db_get_mdata<gid_t>(inode_key + "gid"s)); md.mode(db_get_mdata<mode_t>(inode_key + "mode"s)); md.inode_no(db_get_mdata<fuse_ino_t>(inode_key + "inodeno"s)); md.link_count(db_get_mdata<nlink_t>(inode_key + "linkcnt"s)); md.size(db_get_mdata<off_t>(inode_key + "size"s)); md.blocks(db_get_mdata<blkcnt_t>(inode_key + "blocks"s)); md.atime(db_get_mdata<time_t>(inode_key + std::get<to_underlying(Md_fields::atime)>(md_field_map))); md.mtime(db_get_mdata<time_t>(inode_key + std::get<to_underlying(Md_fields::mtime)>(md_field_map))); md.ctime(db_get_mdata<time_t>(inode_key + std::get<to_underlying(Md_fields::ctime)>(md_field_map))); md.uid(db_get_mdata<uid_t>(inode_key + std::get<to_underlying(Md_fields::uid)>(md_field_map))); md.gid(db_get_mdata<gid_t>(inode_key + std::get<to_underlying(Md_fields::gid)>(md_field_map))); md.mode(db_get_mdata<mode_t>(inode_key + std::get<to_underlying(Md_fields::mode)>(md_field_map))); md.inode_no(db_get_mdata<fuse_ino_t>(inode_key + std::get<to_underlying(Md_fields::inode_no)>(md_field_map))); md.link_count(db_get_mdata<nlink_t>(inode_key + std::get<to_underlying(Md_fields::link_count)>(md_field_map))); md.size(db_get_mdata<off_t>(inode_key + std::get<to_underlying(Md_fields::size)>(md_field_map))); md.blocks(db_get_mdata<blkcnt_t>(inode_key + std::get<to_underlying(Md_fields::blocks)>(md_field_map))); return true; } Loading @@ -50,7 +50,7 @@ bool read_all_metadata(Metadata& md, const fuse_ino_t inode) { int get_metadata(Metadata& md, const fuse_ino_t inode) { ADAFS_DATA->spdlogger()->debug("get_metadata() enter for inode {}", inode); // Verify that the file's inode exists if (db_mdata_exists((fmt::FormatInt(inode).str() + "mtime"s).c_str())) { if (db_mdata_exists(inode)) { read_all_metadata(md, inode); return 0; } else Loading lfs/src/adafs_ops/mdata_ops.hpp +1 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ constexpr typename std::underlying_type<E>::type to_underlying(E e) { 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, "/inode_no"s, "/link_count"s, "/size"s, "/blocks"s "_atime"s, "_mtime"s, "_ctime"s, "_uid"s, "_gid"s, "_mode"s, "_inodeno"s, "_lnkcnt"s, "_size"s, "_blkcnt"s }; bool write_all_metadata(const Metadata& md, const fuse_ino_t inode); Loading Loading
lfs/src/adafs_ops/db_ops.cpp +5 −2 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ // #include "db_ops.hpp" #include "mdata_ops.hpp" using namespace rocksdb; Loading Loading @@ -41,10 +42,12 @@ bool db_dentry_exists(const fuse_ino_t p_inode, const string& name, string& val) return db->Get(rocksdb::ReadOptions(), key, &val).ok(); } bool db_mdata_exists(const string& key) { bool db_mdata_exists(const fuse_ino_t inode) { auto db = ADAFS_DATA->rdb().get(); string val_str; return db->Get(ReadOptions(), key, &val_str).ok(); return db->Get(ReadOptions(), fmt::FormatInt(inode).str() + std::get<to_underlying(Md_fields::atime)>(md_field_map), &val_str).ok(); } bool db_put_dentry(const string& key, const string& val) { Loading
lfs/src/adafs_ops/db_ops.hpp +1 −1 Original line number Diff line number Diff line Loading @@ -20,7 +20,7 @@ T db_get_mdata(const std::string& key); bool db_dentry_exists(const fuse_ino_t p_inode, const std::string& name, std::string& val); bool db_mdata_exists(const std::string& key); bool db_mdata_exists(const fuse_ino_t inode); bool db_put_dentry(const std::string& key, const std::string& val); Loading
lfs/src/adafs_ops/mdata_ops.cpp +21 −21 Original line number Diff line number Diff line Loading @@ -11,16 +11,16 @@ bool write_all_metadata(const Metadata& md, const fuse_ino_t inode) { auto inode_key = fmt::FormatInt(inode).str(); db_put_mdata(inode_key + "atime"s, md.atime()); db_put_mdata(inode_key + "mtime"s, md.mtime()); db_put_mdata(inode_key + "ctime"s, md.ctime()); db_put_mdata(inode_key + "uid"s, md.uid()); db_put_mdata(inode_key + "gid"s, md.gid()); db_put_mdata(inode_key + "mode"s, md.mode()); db_put_mdata(inode_key + "inodeno"s, md.inode_no()); db_put_mdata(inode_key + "linkcnt"s, md.link_count()); db_put_mdata(inode_key + "size"s, md.size()); db_put_mdata(inode_key + "blocks"s, md.blocks()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::atime)>(md_field_map), md.atime()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::mtime)>(md_field_map), md.mtime()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::ctime)>(md_field_map), md.ctime()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::uid)>(md_field_map), md.uid()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::gid)>(md_field_map), md.gid()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::mode)>(md_field_map), md.mode()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::inode_no)>(md_field_map), md.inode_no()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::link_count)>(md_field_map), md.link_count()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::size)>(md_field_map), md.size()); db_put_mdata(inode_key + std::get<to_underlying(Md_fields::blocks)>(md_field_map), md.blocks()); return true; } Loading @@ -28,16 +28,16 @@ bool write_all_metadata(const Metadata& md, const fuse_ino_t inode) { bool read_all_metadata(Metadata& md, const fuse_ino_t inode) { auto inode_key = fmt::FormatInt(inode).str(); md.atime(db_get_mdata<time_t>(inode_key + "atime"s)); md.mtime(db_get_mdata<time_t>(inode_key + "mtime"s)); md.ctime(db_get_mdata<time_t>(inode_key + "ctime"s)); md.uid(db_get_mdata<uid_t>(inode_key + "uid"s)); md.gid(db_get_mdata<gid_t>(inode_key + "gid"s)); md.mode(db_get_mdata<mode_t>(inode_key + "mode"s)); md.inode_no(db_get_mdata<fuse_ino_t>(inode_key + "inodeno"s)); md.link_count(db_get_mdata<nlink_t>(inode_key + "linkcnt"s)); md.size(db_get_mdata<off_t>(inode_key + "size"s)); md.blocks(db_get_mdata<blkcnt_t>(inode_key + "blocks"s)); md.atime(db_get_mdata<time_t>(inode_key + std::get<to_underlying(Md_fields::atime)>(md_field_map))); md.mtime(db_get_mdata<time_t>(inode_key + std::get<to_underlying(Md_fields::mtime)>(md_field_map))); md.ctime(db_get_mdata<time_t>(inode_key + std::get<to_underlying(Md_fields::ctime)>(md_field_map))); md.uid(db_get_mdata<uid_t>(inode_key + std::get<to_underlying(Md_fields::uid)>(md_field_map))); md.gid(db_get_mdata<gid_t>(inode_key + std::get<to_underlying(Md_fields::gid)>(md_field_map))); md.mode(db_get_mdata<mode_t>(inode_key + std::get<to_underlying(Md_fields::mode)>(md_field_map))); md.inode_no(db_get_mdata<fuse_ino_t>(inode_key + std::get<to_underlying(Md_fields::inode_no)>(md_field_map))); md.link_count(db_get_mdata<nlink_t>(inode_key + std::get<to_underlying(Md_fields::link_count)>(md_field_map))); md.size(db_get_mdata<off_t>(inode_key + std::get<to_underlying(Md_fields::size)>(md_field_map))); md.blocks(db_get_mdata<blkcnt_t>(inode_key + std::get<to_underlying(Md_fields::blocks)>(md_field_map))); return true; } Loading @@ -50,7 +50,7 @@ bool read_all_metadata(Metadata& md, const fuse_ino_t inode) { int get_metadata(Metadata& md, const fuse_ino_t inode) { ADAFS_DATA->spdlogger()->debug("get_metadata() enter for inode {}", inode); // Verify that the file's inode exists if (db_mdata_exists((fmt::FormatInt(inode).str() + "mtime"s).c_str())) { if (db_mdata_exists(inode)) { read_all_metadata(md, inode); return 0; } else Loading
lfs/src/adafs_ops/mdata_ops.hpp +1 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ constexpr typename std::underlying_type<E>::type to_underlying(E e) { 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, "/inode_no"s, "/link_count"s, "/size"s, "/blocks"s "_atime"s, "_mtime"s, "_ctime"s, "_uid"s, "_gid"s, "_mode"s, "_inodeno"s, "_lnkcnt"s, "_size"s, "_blkcnt"s }; bool write_all_metadata(const Metadata& md, const fuse_ino_t inode); Loading