Commit 2064d9ab authored by Marc Vef's avatar Marc Vef
Browse files

ifs: stability, added dedicated ipc margo server through shared mem

parent befb9a82
Loading
Loading
Loading
Loading
+27 −11
Original line number Diff line number Diff line
@@ -15,17 +15,21 @@ private:

    // Can't use shared pointers here 'cause the Mercury environment has problems with it, e.g., unable to finalize,
    // resulting into a faulty fuse shutdown
    // Mercury Server
    hg_class_t* server_hg_class_;
    hg_context_t* server_hg_context_;
    // Mercury RPC server
    hg_class_t* server_rpc_hg_class_;
    hg_context_t* server_rpc_hg_context_;
    // Mercury IPC server with shared memory
    hg_class_t* server_ipc_hg_class_;
    hg_context_t* server_ipc_hg_context_;

    // Mercury Client
    hg_class_t* client_hg_class_;
    hg_context_t* client_hg_context_;

    // Margo IDs. They can also be used to retrieve the Mercury classes and contexts that were created at init time
    margo_instance_id server_mid_;
    margo_instance_id client_mid_;
    margo_instance_id server_rpc_mid_;
    margo_instance_id server_ipc_mid_;
    margo_instance_id client_rpc_mid_;

    lru11::Cache<uint64_t, hg_addr_t> address_cache_{32768, 4096}; // XXX Set values are not based on anything...

@@ -61,13 +65,21 @@ public:

    // Getter/Setter

    hg_class_t* server_hg_class() const;
    hg_class_t* server_rpc_hg_class() const;

    void server_hg_class(hg_class_t* server_hg_class);
    void server_rpc_hg_class(hg_class_t* server_rpc_hg_class);

    hg_context_t* server_hg_context() const;
    hg_context_t* server_rpc_hg_context() const;

    void server_hg_context(hg_context_t* server_hg_context);
    void server_rpc_hg_context(hg_context_t* server_rpc_hg_context);

    hg_class_t* server_ipc_hg_class() const;

    void server_ipc_hg_class(hg_class_t* server_ipc_hg_class);

    hg_context_t* server_ipc_hg_context() const;

    void server_ipc_hg_context(hg_context_t* server_ipc_hg_context);

    hg_class_t* client_hg_class() const;

@@ -77,9 +89,13 @@ public:

    void client_hg_context(hg_context_t* client_hg_context);

    margo_instance* server_mid();
    margo_instance* server_rpc_mid();

    void server_rpc_mid(margo_instance* server_rpc_mid);

    margo_instance* server_ipc_mid();

    void server_mid(margo_instance* server_mid);
    void server_ipc_mid(margo_instance* server_ipc_mid);

    margo_instance* client_mid();

+3 −0
Original line number Diff line number Diff line
@@ -17,6 +17,9 @@ bool init_argobots();
void destroy_argobots();
bool init_rpc_server();

bool init_ipc_server();

void register_server_ipcs();
void register_server_rpcs();

bool init_rpc_client();
+1 −1
Original line number Diff line number Diff line
@@ -10,7 +10,7 @@

void send_minimal_rpc(const hg_id_t minimal_id);

int ipc_send_get_fs_config(const hg_id_t ipc_get_config_id);
bool ipc_send_get_fs_config(const hg_id_t ipc_get_config_id);

int ipc_send_open(const char* path, int flags, const mode_t mode, const hg_id_t ipc_open_id);

+0 −38
Original line number Diff line number Diff line
@@ -24,44 +24,6 @@ extern "C" {
#include <preload/open_file_map.hpp>
#include <preload/preload_util.hpp>

#define ld_open open
#define ld_open64 open64
#define ld_fopen fopen

#define ld_creat creat
#define ld_unlink unlink

#define ld_close close
#define ld___close __close

#define ld_stat stat
#define ld_fstat fstat
#define ld___xstat __xstat
#define ld___xstat64 __xstat64
#define ld___fxstat __fxstat
#define ld___fxstat64 __fxstat64
#define ld___lxstat __lxstat
#define ld___lxstat64 __lxstat64

#define ld_access access

#define ld_puts puts

#define ld_write write
#define ld_pwrite pwrite
#define ld_read read
#define ld_pread pread
#define ld_pread64 pread64

#define ld_lseek lseek
#define ld_lseek64 lseek64

#define ld_truncate truncate
#define ld_ftruncate ftruncate

#define ld_dup dup
#define ld_dup2 dup2

struct FsConfig {
    // configurable metadata
    bool atime_state;
+2 −0
Original line number Diff line number Diff line
@@ -14,4 +14,6 @@ bool is_fs_path(const char* path);

int db_val_to_stat(const std::string path, std::string db_val, struct stat& attr);

int getProcIdByName(std::string procName);

#endif //IFS_PRELOAD_UTIL_HPP
Loading