From e8e7921ac10985e3aa0cc960d3ec17820632ad6d Mon Sep 17 00:00:00 2001 From: Ravin Perera <33562092+ravinsp@users.noreply.github.com> Date: Wed, 6 Jan 2021 21:53:39 +0530 Subject: [PATCH] Single-process hpfs integration. (#212) --- src/conf.cpp | 60 +++++----- src/conf.hpp | 32 +++--- src/consensus.cpp | 3 +- src/hpfs/hpfs.cpp | 238 ++++++++++++++++++---------------------- src/hpfs/hpfs.hpp | 30 +++-- src/hpfs/hpfs_serve.cpp | 28 ++--- src/hpfs/hpfs_sync.cpp | 27 +++-- src/hpfs/hpfs_sync.hpp | 1 - src/main.cpp | 7 +- src/sc.cpp | 96 +++++++--------- src/sc.hpp | 8 +- src/usr/read_req.cpp | 4 +- src/usr/usr.cpp | 4 +- test/bin/hpfs | Bin 287600 -> 297680 bytes 14 files changed, 245 insertions(+), 293 deletions(-) diff --git a/src/conf.cpp b/src/conf.cpp index 1ca1ffce..8aeb0026 100644 --- a/src/conf.cpp +++ b/src/conf.cpp @@ -3,7 +3,6 @@ #include "crypto.hpp" #include "hpfs/hpfs.hpp" #include "util/util.hpp" -#include "sc.hpp" namespace conf { @@ -17,11 +16,11 @@ namespace conf // Stores the initial startup mode of the node. ROLE startup_mode; - const static char *ROLE_OBSERVER = "observer"; - const static char *ROLE_VALIDATOR = "validator"; - - const static char *PUBLIC = "public"; - const static char *PRIVATE = "private"; + constexpr const char *ROLE_OBSERVER = "observer"; + constexpr const char *ROLE_VALIDATOR = "validator"; + constexpr const char *PUBLIC = "public"; + constexpr const char *PRIVATE = "private"; + constexpr const char *HPFS_PATCH_SESSION_NAME = "ro_patch"; bool init_success = false; @@ -34,16 +33,16 @@ namespace conf // The validations/loading needs to be in this order. // 1. Validate contract directories // 2. Read and load the contract config into memory - // 3. Update contract config if patch file exists. // 4. Validate the loaded config values - // 5. Locking the config file at the startup. + // 5. Initialize logging subsystem. + // 6. Update and validate contract config if patch file exists. if (validate_contract_dir_paths() == -1 || + set_config_lock() == -1 || read_config(cfg) == -1 || - apply_patch_changes(cfg.contract) == -1 || - validate_config(cfg) == -1 || - set_config_lock() == -1) + validate_config(cfg) == -1) { + release_config_lock(); return -1; } @@ -110,11 +109,7 @@ namespace conf util::create_dir_tree_recursive(ctx.hist_dir); util::create_dir_tree_recursive(ctx.full_hist_dir); util::create_dir_tree_recursive(ctx.log_dir); - util::create_dir_tree_recursive(ctx.hpfs_dir); - - // Creating hpfs seed dir in advance so hpfs doesn't cause mkdir race conditions during first-run. - util::create_dir_tree_recursive(ctx.hpfs_dir + "/seed"); - util::create_dir_tree_recursive(ctx.hpfs_dir + std::string("/seed").append(sc::STATE_DIR_PATH)); + util::create_dir_tree_recursive(ctx.hpfs_dir + "/seed" + hpfs::STATE_DIR_PATH); //Create config file with default settings. @@ -201,8 +196,8 @@ namespace conf ctx.hist_dir = basedir + "/hist"; ctx.full_hist_dir = basedir + "/fullhist"; ctx.hpfs_dir = basedir + "/hpfs"; - ctx.hpfs_rw_dir = ctx.hpfs_dir + "/rw"; - ctx.hpfs_serve_dir = ctx.hpfs_dir + "/ss"; + ctx.hpfs_mount_dir = ctx.hpfs_dir + "/mnt"; + ctx.hpfs_rw_dir = ctx.hpfs_mount_dir + "/rw"; ctx.log_dir = basedir + "/log"; } @@ -769,22 +764,19 @@ namespace conf * @param contract_config Contract section of config structure. * @return Returns -1 on error and 0 on successful update. */ - int apply_patch_changes(contract_params &contract_config) + int apply_patch_changes() { - pid_t hpfs_ro_pid = 0; - std::string mount_dir; // Holds the mount directory of the newly created hpfs session. - int res = 0; + if (hpfs::start_ro_session(HPFS_PATCH_SESSION_NAME, false) == -1) + return -1; - if (hpfs::start_ro_rw_process(hpfs_ro_pid, mount_dir, - true, false, true) == -1 || // Creating a hpfs process and then starts a virtual hpfs session. - validate_and_apply_patch_config(contract_config, mount_dir) == -1 || // Validate content in patch file and update contract section in config. - hpfs::stop_fs_session(mount_dir) == -1) // Stop the created hpfs session. - res = -1; + // Validate content in patch file and update contract section in config. + if (validate_and_apply_patch_config(cfg.contract, HPFS_PATCH_SESSION_NAME) == -1) + { + hpfs::stop_ro_session(HPFS_PATCH_SESSION_NAME); + return -1; + } - // Created hpfs process should be killed even the patch validation failed. - if (hpfs_ro_pid > 0 && util::kill_process(hpfs_ro_pid, true) == -1) - res = -1; - return res; + return hpfs::stop_ro_session(HPFS_PATCH_SESSION_NAME); } /** @@ -793,9 +785,9 @@ namespace conf * @param mount_dir hpfs process mount directory path. * @return Returns -1 on error and 0 in successful update. */ - int validate_and_apply_patch_config(contract_params &contract_config, std::string_view mount_dir) + int validate_and_apply_patch_config(contract_params &contract_config, std::string_view hpfs_session_name) { - const std::string path = std::string(mount_dir).append(PATCH_FILE_PATH); + const std::string path = hpfs::physical_path(hpfs_session_name, hpfs::PATCH_FILE_PATH); if (util::is_file_exists(path)) { std::ifstream ifs(path); @@ -889,7 +881,7 @@ namespace conf if (!contract_config.appbill.bin_args.empty()) util::split_string(contract_config.appbill.runtime_args, contract_config.appbill.bin_args, " "); contract_config.appbill.runtime_args.insert(contract_config.appbill.runtime_args.begin(), (contract_config.appbill.mode[0] == '/' ? contract_config.appbill.mode : util::realpath(conf::ctx.contract_dir + "/bin/" + contract_config.appbill.mode))); - + std::cout << "Contract config updated from patch file\n"; } catch (const std::exception &e) diff --git a/src/conf.hpp b/src/conf.hpp index 9cc28893..322dc909 100644 --- a/src/conf.hpp +++ b/src/conf.hpp @@ -137,20 +137,20 @@ namespace conf std::string hpws_exe_path; // hpws executable file path. std::string hpfs_exe_path; // hpfs executable file path. - std::string contract_dir; // Contract base directory full path - std::string full_hist_dir; // Contract full history dir full path - std::string hist_dir; // Contract ledger history dir full path - std::string hpfs_dir; // Hpfs file system mount path (hpfs path) - std::string hpfs_rw_dir; // Hpfs read/write mount path. - std::string hpfs_serve_dir; // Hpfs server hpfs mount path. - std::string log_dir; // Contract log dir full path - std::string config_dir; // Contract config dir full path - std::string config_file; // Full path to the contract config file - std::string tls_key_file; // Full path to the tls private key file - std::string tls_cert_file; // Full path to the tls certificate + std::string contract_dir; // Contract base directory full path. + std::string full_hist_dir; // Contract full history dir full path. + std::string hist_dir; // Contract ledger history dir full path. + std::string hpfs_dir; // hpfs metdata dir (The location of hpfs log file). + std::string hpfs_mount_dir; // hpfs fuse file system mount path. + std::string hpfs_rw_dir; // hpfs read/write fs session path. + std::string log_dir; // Contract log dir full path. + std::string config_dir; // Contract config dir full path. + std::string config_file; // Full path to the contract config file. + std::string tls_key_file; // Full path to the tls private key file. + std::string tls_cert_file; // Full path to the tls certificate. - int config_fd; // Config file file descriptor - struct flock config_lock; // Config file record log + int config_fd; // Config file file descriptor. + struct flock config_lock; // Config file lock. }; // Holds all the contract config values. @@ -173,8 +173,6 @@ namespace conf // Other modeuls will access config values via this. extern contract_config cfg; - const static char *PATCH_FILE_PATH = "/patch.cfg"; // Config patch filename. - int init(); void deinit(); @@ -203,9 +201,9 @@ namespace conf std::string_view extract_missing_field(std::string err_message); - int apply_patch_changes(contract_params &contract_config); + int apply_patch_changes(); - int validate_and_apply_patch_config(contract_params &contract_config, std::string_view mount_dir); + int validate_and_apply_patch_config(contract_params &contract_config, std::string_view hpfs_session_name); int set_config_lock(); diff --git a/src/consensus.cpp b/src/consensus.cpp index 10268fdf..13c9a973 100644 --- a/src/consensus.cpp +++ b/src/consensus.cpp @@ -817,7 +817,7 @@ namespace consensus new_lcl = ledger::ctx.get_lcl(); const uint64_t new_lcl_seq_no = ledger::ctx.get_seq_no(); - LOG_INFO << "****Ledger created**** (lcl:" << new_lcl.substr(0, 15) << " state hash:" << cons_prop.state_hash << " patch hash:" << cons_prop.patch_hash << ")"; + LOG_INFO << "****Ledger created**** (lcl:" << new_lcl.substr(0, 15) << " state:" << cons_prop.state_hash << " patch:" << cons_prop.patch_hash << ")"; // After the current ledger seq no is updated, we remove any newly expired inputs from candidate set. { @@ -844,7 +844,6 @@ namespace consensus } sc::contract_execution_args &args = ctx.contract_ctx->args; - args.hpfs_dir = conf::ctx.hpfs_rw_dir; args.readonly = false; args.time = cons_prop.time; args.lcl = new_lcl; diff --git a/src/hpfs/hpfs.cpp b/src/hpfs/hpfs.cpp index 276fa2dd..3a8b2dba 100644 --- a/src/hpfs/hpfs.cpp +++ b/src/hpfs/hpfs.cpp @@ -7,12 +7,17 @@ namespace hpfs { - constexpr const char *HPFS_TRACE_ARG_ERROR = "trace=error"; - constexpr const char *HPFS_TRACE_ARG_DEBUG = "trace=error"; - constexpr const char *HPFS_HMAP_HASH = "::hpfs.hmap.hash"; - constexpr const char *HPFS_HMAP_CHILDREN = "::hpfs.hmap.children"; - constexpr const char *HPFS_SESSION = "::hpfs.session"; - constexpr ino_t HPFS_ROOT_INO = 2; + constexpr const char *TRACE_ARG_ERROR = "trace=error"; + constexpr const char *TRACE_ARG_DEBUG = "trace=error"; + constexpr const char *RW_SESSION = "/::hpfs.rw.hmap"; + constexpr const char *RO_SESSION = "/::hpfs.ro."; + constexpr const char *RO_SESSION_HMAP = "/::hpfs.ro.hmap."; + constexpr const char *HMAP_HASH = "::hpfs.hmap.hash"; + constexpr const char *HMAP_CHILDREN = "::hpfs.hmap.children"; + constexpr ino_t ROOT_INO = 1; + + constexpr const char *INIT_SESSION_NAME = "init"; + constexpr uint16_t PROCESS_INIT_TIMEOUT = 2000; constexpr uint16_t INIT_CHECK_INTERVAL = 20; bool init_success = false; hpfs_context ctx; @@ -22,32 +27,25 @@ namespace hpfs */ int init() { - if (start_merge_process(ctx.hpfs_merge_pid) == -1) + if (start_hpfs_process(ctx.hpfs_pid) == -1) return -1; - if (start_ro_rw_process(ctx.hpfs_rw_pid, conf::ctx.hpfs_rw_dir, false, true, false) == -1) - { - // Stop the merge process in case of failure. - util::kill_process(ctx.hpfs_merge_pid, true); - return -1; - } - util::h32 initial_state_hash; util::h32 initial_patch_hash; - if (start_fs_session(conf::ctx.hpfs_rw_dir) == -1 || - get_hash(initial_state_hash, conf::ctx.hpfs_rw_dir, sc::STATE_DIR_PATH) == -1 || - get_hash(initial_patch_hash, conf::ctx.hpfs_rw_dir, conf::PATCH_FILE_PATH) == -1 || - stop_fs_session(conf::ctx.hpfs_rw_dir) == -1) + if (start_ro_session(INIT_SESSION_NAME, true) == -1 || + get_hash(initial_state_hash, INIT_SESSION_NAME, hpfs::STATE_DIR_PATH) == -1 || + get_hash(initial_patch_hash, INIT_SESSION_NAME, hpfs::PATCH_FILE_PATH) == -1 || + stop_ro_session(INIT_SESSION_NAME) == -1) { - LOG_ERROR << "Failed to get initial state hash."; + LOG_ERROR << "Failed to get initial hpfs hashes."; + util::kill_process(ctx.hpfs_pid, true); return -1; } ctx.set_hash(HPFS_PARENT_COMPONENTS::STATE, initial_state_hash); ctx.set_hash(HPFS_PARENT_COMPONENTS::PATCH, initial_patch_hash); - LOG_INFO << "Initial state hash: " << initial_state_hash; - LOG_INFO << "Initial patch hash: " << initial_patch_hash; + LOG_INFO << "Initial state hash: " << initial_state_hash << " | patch hash: " << initial_patch_hash; init_success = true; return 0; } @@ -59,88 +57,26 @@ namespace hpfs { if (init_success) { - LOG_DEBUG << "Stopping hpfs rw process... pid:" << ctx.hpfs_rw_pid; - if (ctx.hpfs_rw_pid > 0 && util::kill_process(ctx.hpfs_rw_pid, true) == 0) - LOG_INFO << "Stopped hpfs rw process."; - - LOG_DEBUG << "Stopping hpfs merge process... pid:" << ctx.hpfs_merge_pid; - if (ctx.hpfs_merge_pid > 0 && util::kill_process(ctx.hpfs_merge_pid, true) == 0) - LOG_INFO << "Stopped hpfs merge process."; + LOG_DEBUG << "Stopping hpfs process... pid:" << ctx.hpfs_pid; + if (ctx.hpfs_pid > 0 && util::kill_process(ctx.hpfs_pid, true) == 0) + LOG_INFO << "Stopped hpfs process."; } } /** - * Starts hpfs merge process. + * Starts the hpfs process used for all fs sessions. */ - int start_merge_process(pid_t &hpfs_pid) + int start_hpfs_process(pid_t &hpfs_pid) { const pid_t pid = fork(); - - if (pid > 0) - { - LOG_DEBUG << "Starting hpfs merge process..."; - - // HotPocket process. - util::sleep(INIT_CHECK_INTERVAL); - - // Check if hpfs process is still running. - // Sending signal 0 to test whether process exist. - if (util::kill_process(pid, false, 0) == -1) - return -1; - - hpfs_pid = pid; - LOG_DEBUG << "hpfs merge process started. pid:" << hpfs_pid; - } - else if (pid == 0) - { - // hpfs process. - util::fork_detach(); - - const char *active_hpfs_trace_arg = (conf::cfg.log.loglevel_type == conf::LOG_SEVERITY::DEBUG ? HPFS_TRACE_ARG_DEBUG : HPFS_TRACE_ARG_ERROR); - - // Fill process args. - char *execv_args[] = { - conf::ctx.hpfs_exe_path.data(), - (char *)"merge", - conf::ctx.hpfs_dir.data(), - (char *)active_hpfs_trace_arg, - NULL}; - - const int ret = execv(execv_args[0], execv_args); - std::cerr << errno << ": hpfs merge process execv failed.\n"; - exit(1); - } - else - { - LOG_ERROR << errno << ": fork() failed when starting hpfs merge process."; - return -1; - } - - return 0; - } - - /** - * Starts hpfs readonly/readwrite process and also starts a virtual fs session. - */ - int start_ro_rw_process(pid_t &hpfs_pid, std::string &mount_dir, const bool readonly, - const bool hash_map_enabled, const bool auto_start_session, const uint16_t timeout) - { - const pid_t pid = fork(); - const char *mode = readonly ? "ro" : "rw"; - if (pid > 0) { // HotPocket process. - LOG_DEBUG << "Starting hpfs " << mode << " process at " << mount_dir; - // If the mount dir is not specified, assign a mount dir based on hpfs process id. - if (mount_dir.empty()) - mount_dir = std::string(conf::ctx.hpfs_dir) - .append("/") - .append(std::to_string(pid)); + LOG_DEBUG << "Starting hpfs process."; // Wait until hpfs is initialized properly. - const uint16_t max_retries = timeout / INIT_CHECK_INTERVAL; + const uint16_t max_retries = PROCESS_INIT_TIMEOUT / INIT_CHECK_INTERVAL; bool hpfs_initialized = false; uint16_t retry_count = 0; do @@ -151,65 +87,54 @@ namespace hpfs // Sending signal 0 to test whether process exist. if (util::kill_process(pid, false, 0) == -1) { - LOG_ERROR << "hpfs process " << pid << " has stopped at " << mount_dir; + LOG_ERROR << "hpfs process " << pid << " has stopped."; break; } // We check for the specific inode no. of the mounted root dir. That means hpfs FUSE interface is up. struct stat st; - if (stat(mount_dir.c_str(), &st) == -1) + if (stat(conf::ctx.hpfs_mount_dir.c_str(), &st) == -1) { - LOG_ERROR << errno << ": Error in checking hpfs status at " << mount_dir; + LOG_ERROR << errno << ": Error in checking hpfs status."; break; } - hpfs_initialized = (st.st_ino == HPFS_ROOT_INO); + hpfs_initialized = (st.st_ino == ROOT_INO); // Keep retrying until root inode no. matches or timeout occurs. } while (!hpfs_initialized && ++retry_count <= max_retries); - // If hpfs FUSE interface initialized within the timeout period, we then attempt to start up a virtual fs session. - // hpfs achieves this by having a 'session' file created. - if (hpfs_initialized && auto_start_session) - start_fs_session(mount_dir); - // Kill the process if hpfs couldn't be initialized properly. if (!hpfs_initialized) { - LOG_ERROR << "Couldn't initialize hpfs session at " << mount_dir; + LOG_ERROR << "Couldn't initialize hpfs process."; util::kill_process(pid, true); return -1; } hpfs_pid = pid; - LOG_DEBUG << "hpfs " << mode << " process started at " << mount_dir << " pid:" << hpfs_pid; + LOG_DEBUG << "hpfs process started. pid:" << hpfs_pid; } else if (pid == 0) { // hpfs process. util::fork_detach(); - // If the mount dir is not specified, assign a mount dir based on hpfs process id. - const pid_t self_pid = getpid(); - if (mount_dir.empty()) - mount_dir = std::string(conf::ctx.hpfs_dir) - .append("/") - .append(std::to_string(self_pid)); - - const char *active_hpfs_trace_arg = (conf::cfg.log.loglevel_type == conf::LOG_SEVERITY::DEBUG ? HPFS_TRACE_ARG_DEBUG : HPFS_TRACE_ARG_ERROR); + const char *active_hpfs_trace_arg = (conf::cfg.log.loglevel_type == conf::LOG_SEVERITY::DEBUG ? TRACE_ARG_DEBUG : TRACE_ARG_ERROR); // Fill process args. char *execv_args[] = { conf::ctx.hpfs_exe_path.data(), - (char *)mode, // hpfs mode: rw | ro + (char *)"fs", conf::ctx.hpfs_dir.data(), - mount_dir.data(), - (char *)(hash_map_enabled ? "hmap=true" : "hmap=false"), + conf::ctx.hpfs_mount_dir.data(), + // In full history mode, we disable log merge of hpfs. + (char *)(conf::cfg.node.full_history ? "merge=false" : "merge=true"), (char *)active_hpfs_trace_arg, NULL}; const int ret = execv(execv_args[0], execv_args); - std::cerr << errno << ": hpfs session process execv failed.\n"; + std::cerr << errno << ": hpfs process execv failed.\n"; exit(1); } else @@ -222,32 +147,82 @@ namespace hpfs } /** - * Starts a virtual fs session on the hpfs process attached to the specified mount dir. + * Starts a virtual fs ReadWrite session with hash map enabled. + * If RW session already started, this will simply acquire a consumer reference. + * @return 0 on success. -1 on failure. */ - int start_fs_session(std::string_view mount_dir) + int acquire_rw_session() { - LOG_DEBUG << "Starting hpfs fs session at " << mount_dir; + std::scoped_lock lock(ctx.rw_mutex); - const std::string session_file = std::string(mount_dir).append("/").append(HPFS_SESSION); + LOG_DEBUG << "Starting hpfs rw session at " << conf::ctx.hpfs_rw_dir; + + const std::string session_file = conf::ctx.hpfs_mount_dir + RW_SESSION; + + // The sessions creation either should be succesful or should report as already exists (errno=EEXIST). + // Otherwise we consider it as failure. + if (mknod(session_file.c_str(), 0, 0) == -1 && errno != EEXIST) + { + LOG_ERROR << errno << ": Error starting hpfs rw session at " << conf::ctx.hpfs_rw_dir; + return -1; + } + ctx.rw_consumers++; + return 0; + } + + /** + * Releases a consumer reference to the RW session. If there are no more references, + * actually stops the running RW session. + * @return 0 on success. -1 on failure. + */ + int release_rw_session() + { + std::scoped_lock lock(ctx.rw_mutex); + + if (ctx.rw_consumers > 0) + ctx.rw_consumers--; + + if (ctx.rw_consumers == 0) + { + const std::string session_file = conf::ctx.hpfs_mount_dir + RW_SESSION; + if (unlink(session_file.c_str()) == -1) + { + LOG_ERROR << errno << ": Error stopping hpfs rw session at " << conf::ctx.hpfs_rw_dir; + return -1; + } + } + return 0; + } + + /** + * Starts a virtual fs ReadOnly session. + * @return 0 on success. -1 on failure. + */ + int start_ro_session(const std::string &name, const bool hmap_enabled) + { + LOG_DEBUG << "Starting hpfs ro session " << name << " hmap:" << hmap_enabled; + + const std::string session_file = conf::ctx.hpfs_mount_dir + (hmap_enabled ? RO_SESSION_HMAP : RO_SESSION) + name; if (mknod(session_file.c_str(), 0, 0) == -1) { - LOG_ERROR << errno << ": Error starting hpfs fs session at " << mount_dir; + LOG_ERROR << errno << ": Error starting hpfs ro session " << name; return -1; } return 0; } /** - * Stops the active virtual fs session on the hpfs process attached to the specified mount dir. + * Stops the specified ReadOnly fs session. + * @return 0 on success. -1 on failure. */ - int stop_fs_session(std::string_view mount_dir) + int stop_ro_session(const std::string &name) { - LOG_DEBUG << "Stopping hpfs fs session at " << mount_dir; + LOG_DEBUG << "Stopping hpfs ro session " << name; - const std::string session_file = std::string(mount_dir).append("/").append(HPFS_SESSION); + const std::string session_file = conf::ctx.hpfs_mount_dir + RO_SESSION + name; if (unlink(session_file.c_str()) == -1) { - LOG_ERROR << errno << ": Error stopping hpfs fs session at " << mount_dir; + LOG_ERROR << errno << ": Error stopping hpfs ro session " << name; return -1; } return 0; @@ -257,9 +232,9 @@ namespace hpfs * Populates the hash of the specified vpath. * @return 1 on success. 0 if vpath not found. -1 on error. */ - int get_hash(util::h32 &hash, const std::string_view mount_dir, const std::string_view vpath) + int get_hash(util::h32 &hash, std::string_view session_name, std::string_view vpath) { - const std::string path = std::string(mount_dir).append(vpath).append(HPFS_HMAP_HASH); + const std::string path = physical_path(session_name, std::string(vpath).append(HMAP_HASH)); const int fd = open(path.c_str(), O_RDONLY | O_CLOEXEC); if (fd == -1 && errno == ENOENT) { @@ -286,9 +261,9 @@ namespace hpfs * Populates the list of file block hashes for the specified vpath. * @return 1 on success. 0 if vpath not found. -1 on error. */ - int get_file_block_hashes(std::vector &hashes, const std::string_view mount_dir, const std::string_view vpath) + int get_file_block_hashes(std::vector &hashes, std::string_view session_name, std::string_view vpath) { - const std::string path = std::string(mount_dir).append(vpath).append(HPFS_HMAP_CHILDREN); + const std::string path = physical_path(session_name, std::string(vpath).append(HMAP_CHILDREN)); const int fd = open(path.c_str(), O_RDONLY | O_CLOEXEC); if (fd == -1 && errno == ENOENT) { @@ -326,9 +301,9 @@ namespace hpfs * Populates the list of dir entry hashes for the specified vpath. * @return 1 on success. 0 if vpath not found. -1 on error. */ - int get_dir_children_hashes(std::vector &hash_nodes, const std::string_view mount_dir, const std::string_view dir_vpath) + int get_dir_children_hashes(std::vector &hash_nodes, std::string_view session_name, std::string_view dir_vpath) { - const std::string path = std::string(mount_dir).append(dir_vpath).append(HPFS_HMAP_CHILDREN); + const std::string path = physical_path(session_name, std::string(dir_vpath).append(HMAP_CHILDREN)); const int fd = open(path.c_str(), O_RDONLY | O_CLOEXEC); if (fd == -1 && errno == ENOENT) { @@ -362,4 +337,9 @@ namespace hpfs return 1; } + const std::string physical_path(std::string_view session_name, std::string_view vpath) + { + return conf::ctx.hpfs_mount_dir + "/" + session_name.data() + vpath.data(); + } + } // namespace hpfs \ No newline at end of file diff --git a/src/hpfs/hpfs.hpp b/src/hpfs/hpfs.hpp index 46839ea9..30551fce 100644 --- a/src/hpfs/hpfs.hpp +++ b/src/hpfs/hpfs.hpp @@ -7,7 +7,10 @@ namespace hpfs { - constexpr size_t BLOCK_SIZE = 4 * 1024 * 1024; // 4MB; + constexpr size_t BLOCK_SIZE = 4 * 1024 * 1024; // 4MB; + constexpr const char *RW_SESSION_NAME = "rw"; // The built-in session name used by hpfs for RW sessions. + constexpr const char *STATE_DIR_PATH = "/state"; // State directory name. + constexpr const char *PATCH_FILE_PATH = "/patch.cfg"; // Config patch filename. struct child_hash_node { @@ -39,8 +42,12 @@ namespace hpfs std::shared_mutex parent_mutexes[2] = {std::shared_mutex(), std::shared_mutex()}; // Mutexes for each parent. public: - pid_t hpfs_merge_pid = 0; - pid_t hpfs_rw_pid = 0; + pid_t hpfs_pid = 0; + + // No. of consumers for RW session. + // We use this as a reference counting mechanism to cleanup RW session when no one requires it. + uint32_t rw_consumers = 0; + std::mutex rw_mutex; hpfs_context() { @@ -69,14 +76,15 @@ namespace hpfs int init(); void deinit(); - int start_merge_process(pid_t &hpfs_pid); - int start_ro_rw_process(pid_t &hpfs_pid, std::string &mount_dir, const bool readonly, - const bool hash_map_enabled, const bool auto_start_session, const uint16_t timeout = 4000); - int start_fs_session(std::string_view mount_dir); - int stop_fs_session(std::string_view mount_dir); - int get_hash(util::h32 &hash, const std::string_view mount_dir, const std::string_view vpath); - int get_file_block_hashes(std::vector &hashes, const std::string_view mount_dir, const std::string_view vpath); - int get_dir_children_hashes(std::vector &hash_nodes, const std::string_view mount_dir, const std::string_view dir_vpath); + int start_hpfs_process(pid_t &hpfs_pid); + int acquire_rw_session(); + int release_rw_session(); + int start_ro_session(const std::string &name, const bool hmap_enabled); + int stop_ro_session(const std::string &name); + int get_hash(util::h32 &hash, std::string_view session_name, std::string_view vpath); + int get_file_block_hashes(std::vector &hashes, std::string_view session_name, std::string_view vpath); + int get_dir_children_hashes(std::vector &hash_nodes, std::string_view session_name, std::string_view dir_vpath); + const std::string physical_path(std::string_view session_name, std::string_view vpath); } // namespace hpfs #endif \ No newline at end of file diff --git a/src/hpfs/hpfs_serve.cpp b/src/hpfs/hpfs_serve.cpp index a90a47de..3f337221 100644 --- a/src/hpfs/hpfs_serve.cpp +++ b/src/hpfs/hpfs_serve.cpp @@ -18,21 +18,17 @@ namespace p2pmsg = msg::fbuf::p2pmsg; namespace hpfs_serve { constexpr uint16_t LOOP_WAIT = 20; // Milliseconds + constexpr const char *HPFS_SESSION_NAME = "rw"; uint16_t REQUEST_BATCH_TIMEOUT; bool is_shutting_down = false; bool init_success = false; - pid_t hpfs_pid; std::thread hpfs_serve_thread; int init() { REQUEST_BATCH_TIMEOUT = hpfs::get_request_resubmit_timeout() * 0.9; - - if (hpfs::start_ro_rw_process(hpfs_pid, conf::ctx.hpfs_serve_dir, true, true, false) == -1) - return -1; - hpfs_serve_thread = std::thread(hpfs_serve_loop); init_success = true; return 0; @@ -44,10 +40,6 @@ namespace hpfs_serve { is_shutting_down = true; hpfs_serve_thread.join(); - - LOG_DEBUG << "Stopping hpfs state serve process... pid:" << hpfs_pid; - if (hpfs_pid > 0 && util::kill_process(hpfs_pid, true) == 0) - LOG_INFO << "Stopped hpfs state serve process."; } } @@ -83,7 +75,7 @@ namespace hpfs_serve if (hpfs_requests.empty()) continue; - if (hpfs::start_fs_session(conf::ctx.hpfs_serve_dir) != -1) + if (hpfs::acquire_rw_session() != -1) { for (auto &[session_id, request] : hpfs_requests) { @@ -124,7 +116,7 @@ namespace hpfs_serve } } - hpfs::stop_fs_session(conf::ctx.hpfs_serve_dir); + hpfs::release_rw_session(); } hpfs_requests.clear(); @@ -225,7 +217,7 @@ namespace hpfs_serve { // Check whether the existing block hash matches expected hash. std::vector block_hashes; - int result = hpfs::get_file_block_hashes(block_hashes, conf::ctx.hpfs_serve_dir, vpath); + int result = hpfs::get_file_block_hashes(block_hashes, HPFS_SESSION_NAME, vpath); if (result == 1) { if (block_id >= block_hashes.size()) @@ -241,7 +233,7 @@ namespace hpfs_serve else // Get actual block data. { struct stat st; - const std::string file_path = std::string(conf::ctx.hpfs_serve_dir).append(vpath); + const std::string file_path = conf::ctx.hpfs_rw_dir + vpath.data(); const off_t block_offset = block_id * hpfs::BLOCK_SIZE; const int fd = open(file_path.c_str(), O_RDONLY | O_CLOEXEC); if (fd == -1) @@ -302,7 +294,7 @@ namespace hpfs_serve { // Check whether the existing file hash matches expected hash. util::h32 file_hash = util::h32_empty; - int result = hpfs::get_hash(file_hash, conf::ctx.hpfs_serve_dir, vpath); + int result = hpfs::get_hash(file_hash, HPFS_SESSION_NAME, vpath); if (result == 1) { if (file_hash != expected_hash) @@ -311,14 +303,14 @@ namespace hpfs_serve result = 0; } // Get the block hashes. - else if (hpfs::get_file_block_hashes(hashes, conf::ctx.hpfs_serve_dir, vpath) < 0) + else if (hpfs::get_file_block_hashes(hashes, HPFS_SESSION_NAME, vpath) < 0) { result = -1; } else { // Get actual file length. - const std::string file_path = std::string(conf::ctx.hpfs_serve_dir).append(vpath); + const std::string file_path = conf::ctx.hpfs_rw_dir + vpath.data(); struct stat st; if (stat(file_path.c_str(), &st) == -1) { @@ -342,7 +334,7 @@ namespace hpfs_serve { // Check whether the existing dir hash matches expected hash. util::h32 dir_hash = util::h32_empty; - int result = hpfs::get_hash(dir_hash, conf::ctx.hpfs_serve_dir, vpath); + int result = hpfs::get_hash(dir_hash, HPFS_SESSION_NAME, vpath); if (result == 1) { if (dir_hash != expected_hash) @@ -351,7 +343,7 @@ namespace hpfs_serve result = 0; } // Get the children hash nodes. - else if (hpfs::get_dir_children_hashes(hash_nodes, conf::ctx.hpfs_serve_dir, vpath) < 0) + else if (hpfs::get_dir_children_hashes(hash_nodes, HPFS_SESSION_NAME, vpath) < 0) { result = -1; } diff --git a/src/hpfs/hpfs_sync.cpp b/src/hpfs/hpfs_sync.cpp index 2ef9abae..3f437e7e 100644 --- a/src/hpfs/hpfs_sync.cpp +++ b/src/hpfs/hpfs_sync.cpp @@ -42,7 +42,6 @@ namespace hpfs_sync // Patch file sync has the highest priority. ctx.current_syncing_parent = hpfs::HPFS_PARENT_COMPONENTS::PATCH; ctx.hpfs_sync_thread = std::thread(hpfs_syncer_loop); - ctx.hpfs_mount_dir = conf::ctx.hpfs_rw_dir; init_success = true; return 0; } @@ -103,7 +102,7 @@ namespace hpfs_sync if (!ctx.is_syncing) continue; - if (hpfs::start_fs_session(ctx.hpfs_mount_dir) != -1) + if (hpfs::acquire_rw_session() != -1) { while (!ctx.is_shutting_down) { @@ -135,7 +134,7 @@ namespace hpfs_sync LOG_INFO << "hpfs sync: Target patch state achieved: " << new_state; // Appling new patch file changes to hpcore runtime. - if (conf::validate_and_apply_patch_config(conf::cfg.contract, conf::ctx.hpfs_rw_dir) == -1) + if (conf::validate_and_apply_patch_config(conf::cfg.contract, hpfs::RW_SESSION_NAME) == -1) { LOG_ERROR << "Appling patch file changes after sync failed"; } @@ -145,7 +144,7 @@ namespace hpfs_sync // Update global hash tracker with the new patch file hash. util::h32 updated_patch_hash; - hpfs::get_hash(updated_patch_hash, conf::ctx.hpfs_rw_dir, conf::PATCH_FILE_PATH); + hpfs::get_hash(updated_patch_hash, hpfs::RW_SESSION_NAME, hpfs::PATCH_FILE_PATH); hpfs::ctx.set_hash(hpfs::HPFS_PARENT_COMPONENTS::PATCH, updated_patch_hash); } @@ -172,7 +171,7 @@ namespace hpfs_sync } LOG_INFO << "hpfs sync: All parents synced."; - hpfs::stop_fs_session(ctx.hpfs_mount_dir); + hpfs::release_rw_session(); } else { @@ -193,12 +192,12 @@ namespace hpfs_sync BACKLOG_ITEM_TYPE target_parent_backlog_item_type; if (ctx.current_syncing_parent == hpfs::HPFS_PARENT_COMPONENTS::STATE) { - target_parent_vpath = sc::STATE_DIR_PATH; + target_parent_vpath = hpfs::STATE_DIR_PATH; target_parent_backlog_item_type = BACKLOG_ITEM_TYPE::DIR; } else if (ctx.current_syncing_parent == hpfs::HPFS_PARENT_COMPONENTS::PATCH) { - target_parent_vpath = conf::PATCH_FILE_PATH; + target_parent_vpath = hpfs::PATCH_FILE_PATH; target_parent_backlog_item_type = BACKLOG_ITEM_TYPE::FILE; } std::string lcl = ledger::ctx.get_lcl(); @@ -317,7 +316,7 @@ namespace hpfs_sync // After handling each response, check whether we have reached target hpfs state. // get_hash returns 0 incase target parent is not existing in our side. - if (hpfs::get_hash(updated_state, ctx.hpfs_mount_dir, target_parent_vpath) == -1) + if (hpfs::get_hash(updated_state, hpfs::RW_SESSION_NAME, target_parent_vpath) == -1) { LOG_ERROR << "hpfs sync: exiting due to hash check error."; return -1; @@ -510,13 +509,13 @@ namespace hpfs_sync LOG_DEBUG << "hpfs sync: Processing fs entries response for " << vpath; // Create physical directory on our side if not exist. - std::string parent_physical_path = std::string(ctx.hpfs_mount_dir).append(vpath); + std::string parent_physical_path = conf::ctx.hpfs_rw_dir + vpath.data(); if (util::create_dir_tree_recursive(parent_physical_path) == -1) return -1; // Get the children hash entries and compare with what we got from peer. std::vector existing_fs_entries; - if (hpfs::get_dir_children_hashes(existing_fs_entries, ctx.hpfs_mount_dir, vpath) == -1) + if (hpfs::get_dir_children_hashes(existing_fs_entries, hpfs::RW_SESSION_NAME, vpath) == -1) return -1; // Request more info on fs entries that exist on both sides but are different. @@ -545,7 +544,7 @@ namespace hpfs_sync else { // If there was an entry that does not exist on other side, delete it. - std::string child_physical_path = std::string(ctx.hpfs_mount_dir).append(child_vpath); + std::string child_physical_path = conf::ctx.hpfs_rw_dir + child_vpath.data(); if ((ex_entry.is_file && unlink(child_physical_path.c_str()) == -1) || !ex_entry.is_file && util::remove_directory_recursively(child_physical_path.c_str()) == -1) @@ -588,7 +587,7 @@ namespace hpfs_sync // File block hashes on our side (file might not exist on our side). std::vector existing_hashes; - if (hpfs::get_file_block_hashes(existing_hashes, ctx.hpfs_mount_dir, vpath) == -1 && errno != ENOENT) + if (hpfs::get_file_block_hashes(existing_hashes, hpfs::RW_SESSION_NAME, vpath) == -1 && errno != ENOENT) return -1; const size_t existing_hash_count = existing_hashes.size(); @@ -605,7 +604,7 @@ namespace hpfs_sync if (existing_hashes.size() >= hash_count) { // If peer file might be smaller, truncate our file to match with peer file. - std::string file_physical_path = std::string(ctx.hpfs_mount_dir).append(vpath); + std::string file_physical_path = conf::ctx.hpfs_rw_dir + vpath.data(); if (truncate(file_physical_path.c_str(), file_length) == -1) return -1; } @@ -626,7 +625,7 @@ namespace hpfs_sync << " (len:" << buf.length() << ") of " << vpath; - std::string file_physical_path = std::string(ctx.hpfs_mount_dir).append(vpath); + std::string file_physical_path = conf::ctx.hpfs_rw_dir + vpath.data(); const int fd = open(file_physical_path.c_str(), O_WRONLY | O_CREAT | O_CLOEXEC, FILE_PERMS); if (fd == -1) { diff --git a/src/hpfs/hpfs_sync.hpp b/src/hpfs/hpfs_sync.hpp index 80744222..b1b1930d 100644 --- a/src/hpfs/hpfs_sync.hpp +++ b/src/hpfs/hpfs_sync.hpp @@ -52,7 +52,6 @@ namespace hpfs_sync std::shared_mutex target_state_mutex; std::atomic is_syncing = false; std::atomic is_shutting_down = false; - std::string hpfs_mount_dir; }; extern sync_context ctx; diff --git a/src/main.cpp b/src/main.cpp index b06d0318..0f2c9cb5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -199,11 +199,12 @@ int main(int argc, char **argv) LOG_INFO << "Public key: " << conf::cfg.node.public_key_hex; LOG_INFO << "Contract: " << conf::cfg.contract.id << " (" << conf::cfg.contract.version << ")"; - if (ledger::init() == -1 || - unl::init() == -1 || - hpfs::init() == -1 || + if (hpfs::init() == -1 || + conf::apply_patch_changes() == -1 || hpfs_serve::init() == -1 || hpfs_sync::init() == -1 || + ledger::init() == -1 || + unl::init() == -1 || consensus::init() == -1 || read_req::init() == -1 || p2p::init() == -1 || diff --git a/src/sc.cpp b/src/sc.cpp index 06bb4f77..f8de1234 100644 --- a/src/sc.cpp +++ b/src/sc.cpp @@ -89,7 +89,7 @@ namespace sc execv_args[j] = conf::cfg.contract.runtime_binexec_args[i].data(); execv_args[len - 1] = NULL; - const std::string current_dir = std::string(ctx.args.hpfs_dir).append(STATE_DIR_PATH); + const std::string current_dir = hpfs::physical_path(ctx.args.hpfs_session_name, hpfs::STATE_DIR_PATH); chdir(current_dir.c_str()); execv(execv_args[0], execv_args); @@ -104,27 +104,6 @@ namespace sc cleanup_fds(ctx); - util::h32 patch_hash; - if (hpfs::get_hash(patch_hash, ctx.args.hpfs_dir, conf::PATCH_FILE_PATH) == 1) - { - if (patch_hash != hpfs::ctx.get_hash(hpfs::HPFS_PARENT_COMPONENTS::PATCH)) - { - - // Appling new patch file changes to hpcore runtime. - if (conf::validate_and_apply_patch_config(conf::cfg.contract, ctx.args.hpfs_dir) == -1) - { - LOG_ERROR << "Appling patch file after contract execution failed"; - } - else - { - // Update global hash tracker with the new patch file hash. - hpfs::ctx.set_hash(hpfs::HPFS_PARENT_COMPONENTS::PATCH, patch_hash); - - unl::update_unl_changes_from_patch(); - } - } - } - if (stop_hpfs_session(ctx) == -1) ret = -1; @@ -170,50 +149,59 @@ namespace sc } /** - * Starts the hpfs read/write virtual filesystem. + * Starts the hpfs virtual filesystem session used for contract execution. */ int start_hpfs_session(execution_context &ctx) { - // In readonly mode, we must start the hpfs process first. - // In RW mode, there is a global hpfs RW process so we only need to create an fs session. - if (ctx.args.readonly) - { - if (hpfs::start_ro_rw_process(ctx.hpfs_pid, ctx.args.hpfs_dir, true, false, false) == -1) - return -1; - } - else - { - ctx.hpfs_pid = hpfs::ctx.hpfs_rw_pid; - } + if (!ctx.args.readonly) + ctx.args.hpfs_session_name = hpfs::RW_SESSION_NAME; - if (hpfs::start_fs_session(ctx.args.hpfs_dir) == -1) - return -1; - - return 0; + return ctx.args.readonly ? hpfs::start_ro_session(ctx.args.hpfs_session_name, false) + : hpfs::acquire_rw_session(); } /** - * Stops the hpfs virtual filesystem. + * Stops the hpfs virtual filesystem session. */ int stop_hpfs_session(execution_context &ctx) { - int result = 0; - // Read the root hash if not in readonly mode. - if (!ctx.args.readonly && hpfs::get_hash(ctx.args.post_execution_state_hash, ctx.args.hpfs_dir, STATE_DIR_PATH) < 1) - result = -1; + if (ctx.args.readonly) + { + return hpfs::stop_ro_session(ctx.args.hpfs_session_name); + } + else + { + // Read the state hash if not in readonly mode. + if (hpfs::get_hash(ctx.args.post_execution_state_hash, ctx.args.hpfs_session_name, hpfs::STATE_DIR_PATH) < 1) + { + hpfs::release_rw_session(); + return -1; + } - LOG_DEBUG << "Stopping hpfs contract session..." << (ctx.args.readonly ? " (rdonly)" : ""); + util::h32 patch_hash; + const int patch_hash_result = hpfs::get_hash(patch_hash, ctx.args.hpfs_session_name, hpfs::PATCH_FILE_PATH); + if (patch_hash_result == -1) + { + hpfs::release_rw_session(); + return -1; + } + else if (patch_hash_result == 1 && patch_hash != hpfs::ctx.get_hash(hpfs::HPFS_PARENT_COMPONENTS::PATCH)) + { + // Appling new patch file changes to hpcore runtime. + if (conf::validate_and_apply_patch_config(conf::cfg.contract, ctx.args.hpfs_session_name) == -1) + { + LOG_ERROR << "Appling patch file after contract execution failed"; + } + else + { + // Update global hash tracker with the new patch file hash. + hpfs::ctx.set_hash(hpfs::HPFS_PARENT_COMPONENTS::PATCH, patch_hash); + unl::update_unl_changes_from_patch(); + } + } - if (hpfs::stop_fs_session(ctx.args.hpfs_dir) == -1) - return -1; - - // In readonly mode, we must also stop the hpfs process itself after sopping the session. - // In RW mode, we only need to stop the fs session and let the process keep running. - if (ctx.args.readonly && util::kill_process(ctx.hpfs_pid, true) == -1) - result = -1; - - ctx.hpfs_pid = 0; - return result; + return hpfs::release_rw_session(); + } } /** diff --git a/src/sc.hpp b/src/sc.hpp index 8cc2bf60..f6eb1836 100644 --- a/src/sc.hpp +++ b/src/sc.hpp @@ -15,7 +15,6 @@ namespace sc { constexpr uint16_t MAX_NPL_MSG_QUEUE_SIZE = 64; // Maximum npl message queue size, The size passed is rounded to next number in binary sequence 1(1),11(3),111(7),1111(15),11111(31).... constexpr uint16_t MAX_CONTROL_MSG_QUEUE_SIZE = 64; // Maximum out message queue size, The size passed is rounded to next number in binary sequence 1(1),11(3),111(7),1111(15),11111(31).... - constexpr const char *STATE_DIR_PATH = "/state"; // State directory name. struct fd_pair { @@ -60,8 +59,8 @@ namespace sc // Whether the contract should execute in read only mode (to serve read requests). bool readonly = false; - // Hpfs dir path to be used for this execution. - std::string hpfs_dir; + // hpfs session name used for this execution. + std::string hpfs_session_name; // Map of user I/O buffers (map key: user binary public key). // The value is a pair holding consensus-verified inputs and contract-generated outputs. @@ -112,9 +111,6 @@ namespace sc // Holds the contract process id (if currently executing). pid_t contract_pid = 0; - // Holds the hpfs rw process id (if currently executing). - pid_t hpfs_pid = 0; - // Thread to collect contract inputs and outputs and feed npl messages while contract is running. std::thread contract_monitor_thread; diff --git a/src/usr/read_req.cpp b/src/usr/read_req.cpp index 36586538..bb301223 100644 --- a/src/usr/read_req.cpp +++ b/src/usr/read_req.cpp @@ -217,9 +217,7 @@ namespace read_req */ void initialize_execution_context(const user_read_req &read_request, const pthread_t thread_id, sc::execution_context &contract_ctx) { - // Create new folder with the thread id per each thread. - contract_ctx.args.hpfs_dir = conf::ctx.hpfs_dir; - contract_ctx.args.hpfs_dir.append("/rr_").append(std::to_string(thread_id)); + contract_ctx.args.hpfs_session_name = "ro_" + std::to_string(thread_id); contract_ctx.args.readonly = true; sc::contract_iobufs user_bufs; user_bufs.inputs.push_back(read_request.content); diff --git a/src/usr/usr.cpp b/src/usr/usr.cpp index 26f41ec1..47205454 100644 --- a/src/usr/usr.cpp +++ b/src/usr/usr.cpp @@ -8,6 +8,7 @@ #include "../hplog.hpp" #include "../ledger.hpp" #include "../util/buffer_store.hpp" +#include "../hpfs/hpfs.hpp" #include "usr.hpp" #include "user_session_handler.hpp" #include "user_comm_session.hpp" @@ -389,7 +390,8 @@ namespace usr util::fork_detach(); // before execution chdir into a valid the latest state data directory that contains an appbill.table - chdir(conf::ctx.hpfs_rw_dir.c_str()); + const std::string appbill_dir = conf::ctx.hpfs_rw_dir + hpfs::STATE_DIR_PATH; + chdir(appbill_dir.c_str()); int ret = execv(execv_args[0], execv_args); std::cerr << errno << ": Appbill process execv failed.\n"; return false; diff --git a/test/bin/hpfs b/test/bin/hpfs index e3335f495154c6e6e64eef616e26d1eb6858f6e4..3a8a1c91171054876e16c840b1156f0fab0c260f 100755 GIT binary patch delta 125014 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