Loading lfs/src/adafs_ops/mdata_ops.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -144,7 +144,7 @@ void metadata_to_stat(const Metadata& md, struct stat& attr) { int create_node(fuse_req_t& req, struct fuse_entry_param& fep, fuse_ino_t parent, const string& name, mode_t mode) { // create metadata of new file (this will also create a new inode number) // mode is used here to init metadata auto md = make_shared<Metadata>(mode, fuse_req_ctx(req)->uid, fuse_req_ctx(req)->gid, req); auto md = make_shared<Metadata>(mode, fuse_req_ctx(req)->uid, fuse_req_ctx(req)->gid); if ((mode & S_IFDIR) == S_IFDIR) { md->size( ADAFS_DATA->blocksize()); // XXX just visual. size computation of directory should be done properly at some point Loading lfs/src/classes/fs_data.cpp +18 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ #include "fs_data.h" // getter/setter const std::unordered_map<std::string, std::string>& FsData::hashmap() const { return hashmap_; } Loading Loading @@ -132,3 +134,19 @@ void FsData::rdb_write_options(const rocksdb::WriteOptions& rdb_write_options) { FsData::rdb_write_options_ = rdb_write_options; } fuse_ino_t FsData::inode_count() const { return inode_count_; } void FsData::inode_count(fuse_ino_t inode_count) { FsData::inode_count_ = inode_count; } // Utility member functions fuse_ino_t FsData::raise_inode_count(fuse_ino_t count) { FsData::inode_count_ += count; return FsData::inode_count_; } lfs/src/classes/fs_data.h +15 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ private: std::unordered_map<std::string, std::string> hashmap_; std::hash<std::string> hashf_; // inodes fuse_ino_t inode_count_; // Later the blocksize will likely be coupled to the chunks to allow individually big chunk sizes. blksize_t blocksize_; Loading @@ -39,6 +42,10 @@ private: std::string rdb_path_; public: // mutex has a deleted method to assign an existing mutex. As such it cannot use getter or setters std::mutex inode_mutex; static FsData* getInstance() { static FsData instance; return &instance; Loading @@ -57,6 +64,10 @@ public: void hashf(const std::hash<std::string>& hashf_); fuse_ino_t inode_count() const; void inode_count(fuse_ino_t inode_count); blksize_t blocksize() const; void blocksize(blksize_t blocksize_); Loading Loading @@ -112,6 +123,10 @@ public: const rocksdb::WriteOptions& rdb_write_options() const; void rdb_write_options(const rocksdb::WriteOptions& rdb_write_options); // Utility member functions fuse_ino_t raise_inode_count(fuse_ino_t count); }; Loading lfs/src/classes/metadata.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ Metadata::Metadata() : atime_(), size_(0), blocks_(0) {} Metadata::Metadata(mode_t mode, uint32_t uid, uint32_t gid, fuse_req_t& req) : Metadata::Metadata(mode_t mode, uint32_t uid, uint32_t gid) : atime_(), mtime_(), ctime_(), Loading @@ -110,7 +110,7 @@ Metadata::Metadata(mode_t mode, uint32_t uid, uint32_t gid, fuse_req_t& req) : size_(0), blocks_(0) { init_ACM_time(); inode_no_ = Util::generate_inode_no(req); inode_no_ = Util::generate_inode_no(); } Metadata::Metadata(mode_t mode, uid_t uid, gid_t gid, fuse_ino_t inode) : Loading lfs/src/classes/metadata.h +1 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ private: public: Metadata(); Metadata(mode_t mode, uid_t uid, gid_t gid, fuse_req_t& req); Metadata(mode_t mode, uint32_t uid, uint32_t gid); Metadata(mode_t mode, uid_t uid, gid_t gid, fuse_ino_t inode); Loading Loading
lfs/src/adafs_ops/mdata_ops.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -144,7 +144,7 @@ void metadata_to_stat(const Metadata& md, struct stat& attr) { int create_node(fuse_req_t& req, struct fuse_entry_param& fep, fuse_ino_t parent, const string& name, mode_t mode) { // create metadata of new file (this will also create a new inode number) // mode is used here to init metadata auto md = make_shared<Metadata>(mode, fuse_req_ctx(req)->uid, fuse_req_ctx(req)->gid, req); auto md = make_shared<Metadata>(mode, fuse_req_ctx(req)->uid, fuse_req_ctx(req)->gid); if ((mode & S_IFDIR) == S_IFDIR) { md->size( ADAFS_DATA->blocksize()); // XXX just visual. size computation of directory should be done properly at some point Loading
lfs/src/classes/fs_data.cpp +18 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,8 @@ #include "fs_data.h" // getter/setter const std::unordered_map<std::string, std::string>& FsData::hashmap() const { return hashmap_; } Loading Loading @@ -132,3 +134,19 @@ void FsData::rdb_write_options(const rocksdb::WriteOptions& rdb_write_options) { FsData::rdb_write_options_ = rdb_write_options; } fuse_ino_t FsData::inode_count() const { return inode_count_; } void FsData::inode_count(fuse_ino_t inode_count) { FsData::inode_count_ = inode_count; } // Utility member functions fuse_ino_t FsData::raise_inode_count(fuse_ino_t count) { FsData::inode_count_ += count; return FsData::inode_count_; }
lfs/src/classes/fs_data.h +15 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,9 @@ private: std::unordered_map<std::string, std::string> hashmap_; std::hash<std::string> hashf_; // inodes fuse_ino_t inode_count_; // Later the blocksize will likely be coupled to the chunks to allow individually big chunk sizes. blksize_t blocksize_; Loading @@ -39,6 +42,10 @@ private: std::string rdb_path_; public: // mutex has a deleted method to assign an existing mutex. As such it cannot use getter or setters std::mutex inode_mutex; static FsData* getInstance() { static FsData instance; return &instance; Loading @@ -57,6 +64,10 @@ public: void hashf(const std::hash<std::string>& hashf_); fuse_ino_t inode_count() const; void inode_count(fuse_ino_t inode_count); blksize_t blocksize() const; void blocksize(blksize_t blocksize_); Loading Loading @@ -112,6 +123,10 @@ public: const rocksdb::WriteOptions& rdb_write_options() const; void rdb_write_options(const rocksdb::WriteOptions& rdb_write_options); // Utility member functions fuse_ino_t raise_inode_count(fuse_ino_t count); }; Loading
lfs/src/classes/metadata.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -98,7 +98,7 @@ Metadata::Metadata() : atime_(), size_(0), blocks_(0) {} Metadata::Metadata(mode_t mode, uint32_t uid, uint32_t gid, fuse_req_t& req) : Metadata::Metadata(mode_t mode, uint32_t uid, uint32_t gid) : atime_(), mtime_(), ctime_(), Loading @@ -110,7 +110,7 @@ Metadata::Metadata(mode_t mode, uint32_t uid, uint32_t gid, fuse_req_t& req) : size_(0), blocks_(0) { init_ACM_time(); inode_no_ = Util::generate_inode_no(req); inode_no_ = Util::generate_inode_no(); } Metadata::Metadata(mode_t mode, uid_t uid, gid_t gid, fuse_ino_t inode) : Loading
lfs/src/classes/metadata.h +1 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ private: public: Metadata(); Metadata(mode_t mode, uid_t uid, gid_t gid, fuse_req_t& req); Metadata(mode_t mode, uint32_t uid, uint32_t gid); Metadata(mode_t mode, uid_t uid, gid_t gid, fuse_ino_t inode); Loading