Unverified Commit a1b20dcc authored by Tommaso Tocci's avatar Tommaso Tocci
Browse files

Add support for endpoint shared lookup file

For some comunication layers an out of band communication is required for putting in place the specific protocol handshake.

In those case a shared lookup file could be used to distribute deamon's endpoints information to all the clients.

This file need to resides on a shared filesystem and can be specified using the new CLI parameter `--lookup-file`.
parent d14bffa3
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -28,9 +28,11 @@ struct FsConfig {
    // rpc infos
    // rpc infos
    std::map<uint64_t, std::string> hosts;
    std::map<uint64_t, std::string> hosts;
    std::map<std::string, std::string> sys_hostfile;
    std::map<std::string, std::string> sys_hostfile;
    std::unordered_map<std::string, std::string> endpoints;
    uint64_t host_id; // my host number
    uint64_t host_id; // my host number
    size_t host_size;
    size_t host_size;
    std::string rpc_port;
    std::string rpc_port;
    std::string lookup_file;
};
};


enum class RelativizeStatus {
enum class RelativizeStatus {
+3 −0
Original line number Original line Diff line number Diff line
@@ -7,6 +7,7 @@
// third party libs
// third party libs
#include <string>
#include <string>
#include <iostream>
#include <iostream>
#include <unordered_map>


extern "C" {
extern "C" {
#include <margo.h>
#include <margo.h>
@@ -48,6 +49,8 @@ int metadata_to_stat(const std::string& path, const Metadata& md, struct stat& a


int get_daemon_pid();
int get_daemon_pid();


std::unordered_map<std::string, std::string> load_lookup_file(const std::string& lfpath);

bool read_system_hostfile();
bool read_system_hostfile();


hg_addr_t get_local_addr();
hg_addr_t get_local_addr();
+3 −0
Original line number Original line Diff line number Diff line
@@ -34,4 +34,7 @@ void register_daemon_proc();


bool deregister_daemon_proc();
bool deregister_daemon_proc();


void populate_lookup_file();
void destroy_lookup_file();

#endif //IFS_ADAFS_DAEMON_HPP
#endif //IFS_ADAFS_DAEMON_HPP
+5 −0
Original line number Original line Diff line number Diff line
@@ -39,6 +39,7 @@ private:
    uint64_t host_id_; // my host number
    uint64_t host_id_; // my host number
    size_t host_size_;
    size_t host_size_;
    std::string rpc_port_;
    std::string rpc_port_;
    std::string lookup_file_;


    // Database
    // Database
    std::shared_ptr<MetadataDB> mdb_;
    std::shared_ptr<MetadataDB> mdb_;
@@ -132,6 +133,10 @@ public:


    void rpc_port(std::string rpc_port);
    void rpc_port(std::string rpc_port);


    const std::string& lookup_file() const;

    void lookup_file(const std::string& lookup_file);

    bool atime_state() const;
    bool atime_state() const;


    void atime_state(bool atime_state);
    void atime_state(bool atime_state);
+3 −1
Original line number Original line Diff line number Diff line
@@ -104,7 +104,9 @@ MERCURY_GEN_PROC(rpc_config_out_t, ((hg_const_string_t) (mountdir))
((hg_uint32_t) (gid)) \
((hg_uint32_t) (gid)) \
((hg_const_string_t) (hosts_raw)) \
((hg_const_string_t) (hosts_raw)) \
((hg_uint64_t) (host_id)) \
((hg_uint64_t) (host_id)) \
((hg_uint64_t) (host_size)))
        ((hg_uint64_t) (host_size)) \
        ((hg_const_string_t) (lookup_file))
)




MERCURY_GEN_PROC(rpc_chunk_stat_in_t,
MERCURY_GEN_PROC(rpc_chunk_stat_in_t,
Loading