Loading hermes @ 0af45bfa Compare a25a82d4 to 0af45bfa Original line number Diff line number Diff line Subproject commit a25a82d401b4a0d986088c6802a08fd79185a278 Subproject commit 0af45bfa667f7ff9c78167ef94d975bffbd879f0 include/client/hooks.hpp +2 −0 Original line number Diff line number Diff line Loading @@ -105,6 +105,8 @@ int hook_statfs(const char* path, struct statfs* buf); int hook_fstatfs(unsigned int fd, struct statfs* buf); int hook_fsync(unsigned int fd); } // namespace hook } // namespace gkfs Loading include/client/rpc/rpc_types.hpp +10 −1 Original line number Diff line number Diff line Loading @@ -2092,11 +2092,13 @@ struct chunk_stat { public: output() : m_err(), m_chunk_size(), m_chunk_total(), m_chunk_free() {} output(uint64_t chunk_size, uint64_t chunk_total, uint64_t chunk_free) : output(int32_t err, uint64_t chunk_size, uint64_t chunk_total, uint64_t chunk_free) : m_err(err), m_chunk_size(chunk_size), m_chunk_total(chunk_total), m_chunk_free(chunk_free) {} Loading @@ -2111,11 +2113,17 @@ struct chunk_stat { explicit output(const rpc_chunk_stat_out_t& out) { m_err = out.err; m_chunk_size = out.chunk_size; m_chunk_total = out.chunk_total; m_chunk_free = out.chunk_free; } int32_t err() const { return m_err; } uint64_t chunk_size() const { return m_chunk_size; Loading @@ -2132,6 +2140,7 @@ struct chunk_stat { } private: int32_t m_err; uint64_t m_chunk_size; uint64_t m_chunk_total; uint64_t m_chunk_free; Loading include/daemon/backend/data/chunk_storage.hpp +22 −22 Original line number Diff line number Diff line Loading @@ -14,13 +14,12 @@ #ifndef GEKKOFS_CHUNK_STORAGE_HPP #define GEKKOFS_CHUNK_STORAGE_HPP extern "C" { #include <abt.h> } #include <global/global_defs.hpp> #include <limits> #include <string> #include <memory> #include <system_error> /* Forward declarations */ namespace spdlog { Loading @@ -36,42 +35,43 @@ struct ChunkStat { unsigned long chunk_free; }; class ChunkStorageException : public std::system_error { public: ChunkStorageException(const int err_code, const std::string& s) : std::system_error(err_code, std::generic_category(), s) {}; }; class ChunkStorage { private: static constexpr const char* LOGGER_NAME = "ChunkStorage"; std::shared_ptr<spdlog::logger> log; std::shared_ptr<spdlog::logger> log_; std::string root_path; size_t chunksize; std::string root_path_; size_t chunksize_; inline std::string absolute(const std::string& internal_path) const; static inline std::string get_chunks_dir(const std::string& file_path); static inline std::string get_chunk_path(const std::string& file_path, unsigned int chunk_id); static inline std::string get_chunk_path(const std::string& file_path, gkfs::rpc::chnk_id_t chunk_id); void init_chunk_space(const std::string& file_path) const; public: ChunkStorage(const std::string& path, size_t chunksize); ChunkStorage(std::string& path, size_t chunksize); void write_chunk(const std::string& file_path, unsigned int chunk_id, const char* buff, size_t size, off64_t offset, ABT_eventual& eventual) const; void read_chunk(const std::string& file_path, unsigned int chunk_id, char* buff, size_t size, off64_t offset, ABT_eventual& eventual) const; void destroy_chunk_space(const std::string& file_path) const; void trim_chunk_space(const std::string& file_path, unsigned int chunk_start, unsigned int chunk_end = std::numeric_limits<unsigned int>::max()); ssize_t write_chunk(const std::string& file_path, gkfs::rpc::chnk_id_t chunk_id, const char* buf, size_t size, off64_t offset) const; void delete_chunk(const std::string& file_path, unsigned int chunk_id); ssize_t read_chunk(const std::string& file_path, gkfs::rpc::chnk_id_t chunk_id, char* buf, size_t size, off64_t offset) const; void truncate_chunk(const std::string& file_path, unsigned int chunk_id, off_t length); void trim_chunk_space(const std::string& file_path, gkfs::rpc::chnk_id_t chunk_start); void destroy_chunk_space(const std::string& file_path) const; void truncate_chunk_file(const std::string& file_path, gkfs::rpc::chnk_id_t chunk_id, off_t length); ChunkStat chunk_stat() const; }; Loading include/daemon/backend/data/data_module.hpp 0 → 100644 +53 −0 Original line number Diff line number Diff line /* Copyright 2018-2020, Barcelona Supercomputing Center (BSC), Spain Copyright 2015-2020, Johannes Gutenberg Universitaet Mainz, Germany This software was partially supported by the EC H2020 funded project NEXTGenIO (Project ID: 671951, www.nextgenio.eu). This software was partially supported by the ADA-FS project under the SPPEXA project funded by the DFG. SPDX-License-Identifier: MIT */ #ifndef GEKKOFS_DAEMON_DATA_LOGGING_HPP #define GEKKOFS_DAEMON_DATA_LOGGING_HPP #include <spdlog/spdlog.h> namespace gkfs { namespace data { class DataModule { private: DataModule() {} std::shared_ptr<spdlog::logger> log_; public: static constexpr const char* LOGGER_NAME = "DataModule"; static DataModule* getInstance() { static DataModule instance; return &instance; } DataModule(DataModule const&) = delete; void operator=(DataModule const&) = delete; const std::shared_ptr<spdlog::logger>& log() const; void log(const std::shared_ptr<spdlog::logger>& log); }; #define GKFS_DATA_MOD (static_cast<gkfs::data::DataModule*>(gkfs::data::DataModule::getInstance())) } // namespace data } // namespace gkfs #endif //GEKKOFS_DAEMON_DATA_LOGGING_HPP Loading
hermes @ 0af45bfa Compare a25a82d4 to 0af45bfa Original line number Diff line number Diff line Subproject commit a25a82d401b4a0d986088c6802a08fd79185a278 Subproject commit 0af45bfa667f7ff9c78167ef94d975bffbd879f0
include/client/hooks.hpp +2 −0 Original line number Diff line number Diff line Loading @@ -105,6 +105,8 @@ int hook_statfs(const char* path, struct statfs* buf); int hook_fstatfs(unsigned int fd, struct statfs* buf); int hook_fsync(unsigned int fd); } // namespace hook } // namespace gkfs Loading
include/client/rpc/rpc_types.hpp +10 −1 Original line number Diff line number Diff line Loading @@ -2092,11 +2092,13 @@ struct chunk_stat { public: output() : m_err(), m_chunk_size(), m_chunk_total(), m_chunk_free() {} output(uint64_t chunk_size, uint64_t chunk_total, uint64_t chunk_free) : output(int32_t err, uint64_t chunk_size, uint64_t chunk_total, uint64_t chunk_free) : m_err(err), m_chunk_size(chunk_size), m_chunk_total(chunk_total), m_chunk_free(chunk_free) {} Loading @@ -2111,11 +2113,17 @@ struct chunk_stat { explicit output(const rpc_chunk_stat_out_t& out) { m_err = out.err; m_chunk_size = out.chunk_size; m_chunk_total = out.chunk_total; m_chunk_free = out.chunk_free; } int32_t err() const { return m_err; } uint64_t chunk_size() const { return m_chunk_size; Loading @@ -2132,6 +2140,7 @@ struct chunk_stat { } private: int32_t m_err; uint64_t m_chunk_size; uint64_t m_chunk_total; uint64_t m_chunk_free; Loading
include/daemon/backend/data/chunk_storage.hpp +22 −22 Original line number Diff line number Diff line Loading @@ -14,13 +14,12 @@ #ifndef GEKKOFS_CHUNK_STORAGE_HPP #define GEKKOFS_CHUNK_STORAGE_HPP extern "C" { #include <abt.h> } #include <global/global_defs.hpp> #include <limits> #include <string> #include <memory> #include <system_error> /* Forward declarations */ namespace spdlog { Loading @@ -36,42 +35,43 @@ struct ChunkStat { unsigned long chunk_free; }; class ChunkStorageException : public std::system_error { public: ChunkStorageException(const int err_code, const std::string& s) : std::system_error(err_code, std::generic_category(), s) {}; }; class ChunkStorage { private: static constexpr const char* LOGGER_NAME = "ChunkStorage"; std::shared_ptr<spdlog::logger> log; std::shared_ptr<spdlog::logger> log_; std::string root_path; size_t chunksize; std::string root_path_; size_t chunksize_; inline std::string absolute(const std::string& internal_path) const; static inline std::string get_chunks_dir(const std::string& file_path); static inline std::string get_chunk_path(const std::string& file_path, unsigned int chunk_id); static inline std::string get_chunk_path(const std::string& file_path, gkfs::rpc::chnk_id_t chunk_id); void init_chunk_space(const std::string& file_path) const; public: ChunkStorage(const std::string& path, size_t chunksize); ChunkStorage(std::string& path, size_t chunksize); void write_chunk(const std::string& file_path, unsigned int chunk_id, const char* buff, size_t size, off64_t offset, ABT_eventual& eventual) const; void read_chunk(const std::string& file_path, unsigned int chunk_id, char* buff, size_t size, off64_t offset, ABT_eventual& eventual) const; void destroy_chunk_space(const std::string& file_path) const; void trim_chunk_space(const std::string& file_path, unsigned int chunk_start, unsigned int chunk_end = std::numeric_limits<unsigned int>::max()); ssize_t write_chunk(const std::string& file_path, gkfs::rpc::chnk_id_t chunk_id, const char* buf, size_t size, off64_t offset) const; void delete_chunk(const std::string& file_path, unsigned int chunk_id); ssize_t read_chunk(const std::string& file_path, gkfs::rpc::chnk_id_t chunk_id, char* buf, size_t size, off64_t offset) const; void truncate_chunk(const std::string& file_path, unsigned int chunk_id, off_t length); void trim_chunk_space(const std::string& file_path, gkfs::rpc::chnk_id_t chunk_start); void destroy_chunk_space(const std::string& file_path) const; void truncate_chunk_file(const std::string& file_path, gkfs::rpc::chnk_id_t chunk_id, off_t length); ChunkStat chunk_stat() const; }; Loading
include/daemon/backend/data/data_module.hpp 0 → 100644 +53 −0 Original line number Diff line number Diff line /* Copyright 2018-2020, Barcelona Supercomputing Center (BSC), Spain Copyright 2015-2020, Johannes Gutenberg Universitaet Mainz, Germany This software was partially supported by the EC H2020 funded project NEXTGenIO (Project ID: 671951, www.nextgenio.eu). This software was partially supported by the ADA-FS project under the SPPEXA project funded by the DFG. SPDX-License-Identifier: MIT */ #ifndef GEKKOFS_DAEMON_DATA_LOGGING_HPP #define GEKKOFS_DAEMON_DATA_LOGGING_HPP #include <spdlog/spdlog.h> namespace gkfs { namespace data { class DataModule { private: DataModule() {} std::shared_ptr<spdlog::logger> log_; public: static constexpr const char* LOGGER_NAME = "DataModule"; static DataModule* getInstance() { static DataModule instance; return &instance; } DataModule(DataModule const&) = delete; void operator=(DataModule const&) = delete; const std::shared_ptr<spdlog::logger>& log() const; void log(const std::shared_ptr<spdlog::logger>& log); }; #define GKFS_DATA_MOD (static_cast<gkfs::data::DataModule*>(gkfs::data::DataModule::getInstance())) } // namespace data } // namespace gkfs #endif //GEKKOFS_DAEMON_DATA_LOGGING_HPP