Commit 2f3e210f authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

Merge branch...

Merge branch '119-new-options-auto_sm-and-rpc_protocol-should-use-dashes-as-separators' into 'master'

Resolve "New options `--auto_sm` and `--rpc_protocol` should use dashes as separators"

Closes #119

See merge request hpc/gekkofs!63
parents a2e97663 6746bf3e
Loading
Loading
Loading
Loading
+20 −18
Original line number Diff line number Diff line
@@ -157,11 +157,13 @@ Further options:
```bash
Allowed options:
  -h [ --help ]             Help message
  -m [ --mountdir ] arg     pseudo mountdir
  -r [ --rootdir ] arg      data directory
  -i [ --metadir ] arg      metadata directory, if not set rootdir is used for
                            metadata
  -l [ --listen ] arg       Address or interface to bind the daemon on.
  -m [ --mountdir ] arg     Virtual mounting directory where GekkoFS is 
                            available.
  -r [ --rootdir ] arg      Local data directory where GekkoFS data for this 
                            daemon is stored.
  -i [ --metadir ] arg      Metadata directory where GekkoFS' RocksDB data 
                            directory is located. If not set, rootdir is used.
  -l [ --listen ] arg       Address or interface to bind the daemon to. 
                            Default: local hostname.
                            When used with ofi+verbs the FI_VERBS_IFACE 
                            environment variable is set accordingly which 
@@ -169,16 +171,16 @@ Allowed options:
                            interface. In case FI_VERBS_IFACE is already 
                            defined, the argument is ignored. Default 'ib'.
  -H [ --hosts-file ] arg   Shared file used by deamons to register their 
                            enpoints. (default './gkfs_hosts.txt')
  -P [ --rpc_protocol ] arg Used RPC protocol for inter-node communication.
                            endpoints. (default './gkfs_hosts.txt')
  -P [ --rpc-protocol ] arg Used RPC protocol for inter-node communication.
                            Available: {ofi+sockets, ofi+verbs, ofi+psm2} for 
                            (TCP, Infiniband, and Omni-Path, respectively.
                            TCP, Infiniband, and Omni-Path, respectively. 
                            (Default ofi+sockets)
                            Libfabric must have verbs or psm2 support enabled.
  --auto_sm                 Enables intra-node communication (IPCs) via the
                            Libfabric must have enabled support verbs or psm2.
  --auto-sm                 Enables intra-node communication (IPCs) via the 
                            `na+sm` (shared memory) protocol, instead of using 
                            the RPC protocol. (Default off)
  --version                 print version and exit
  --version                 Print version and exit.
```

Shut it down by gracefully killing the process (SIGTERM).
+15 −16
Original line number Diff line number Diff line
@@ -312,8 +312,8 @@ void initialize_loggers() {
 */
void parse_input(const po::variables_map& vm) {
    auto rpc_protocol = string(gkfs::rpc::protocol::ofi_sockets);
    if (vm.count("rpc_protocol")) {
        rpc_protocol = vm["rpc_protocol"].as<string>();
    if (vm.count("rpc-protocol")) {
        rpc_protocol = vm["rpc-protocol"].as<string>();
        if (rpc_protocol != gkfs::rpc::protocol::ofi_verbs &&
            rpc_protocol != gkfs::rpc::protocol::ofi_sockets &&
            rpc_protocol != gkfs::rpc::protocol::ofi_psm2) {
@@ -323,10 +323,7 @@ void parse_input(const po::variables_map& vm) {
        }
    }

    auto use_auto_sm = false;
    if (vm.count("auto_sm")) {
        use_auto_sm = true;
    }
    auto use_auto_sm = vm.count("auto-sm") != 0;
    GKFS_DATA->use_auto_sm(use_auto_sm);
    GKFS_DATA->spdlogger()->debug("{}() Shared memory (auto_sm) for intra-node communication (IPCs) set to '{}'.",
                                  __func__, use_auto_sm);
@@ -417,23 +414,25 @@ int main(int argc, const char* argv[]) {
    po::options_description desc("Allowed options");
    desc.add_options()
            ("help,h", "Help message")
            ("mountdir,m", po::value<string>()->required(), "User Fuse mountdir")
            ("rootdir,r", po::value<string>()->required(), "data directory")
            ("metadir,i", po::value<string>(), "metadata directory, if not set rootdir is used for metadata ")
            ("listen,l", po::value<string>(), "Address or interface to bind the daemon on. Default: local hostname.\n"
            ("mountdir,m", po::value<string>()->required(), "Virtual mounting directory where GekkoFS is available.")
            ("rootdir,r", po::value<string>()->required(),
             "Local data directory where GekkoFS data for this daemon is stored.")
            ("metadir,i", po::value<string>(),
             "Metadata directory where GekkoFS' RocksDB data directory is located. If not set, rootdir is used.")
            ("listen,l", po::value<string>(), "Address or interface to bind the daemon to. Default: local hostname.\n"
                                              "When used with ofi+verbs the FI_VERBS_IFACE environment variable is set accordingly "
                                              "which associates the verbs device with the network interface. In case FI_VERBS_IFACE "
                                              "is already defined, the argument is ignored. Default 'ib'.")
            ("hosts-file,H", po::value<string>(),
             "Shared file used by deamons to register their "
             "enpoints. (default './gkfs_hosts.txt')")
            ("rpc_protocol,P", po::value<string>(), "Used RPC protocol for inter-node communication.\n"
                                                    "Available: {ofi+sockets, ofi+verbs, ofi+psm2} for (TCP, Infiniband, "
             "endpoints. (default './gkfs_hosts.txt')")
            ("rpc-protocol,P", po::value<string>(), "Used RPC protocol for inter-node communication.\n"
                                                    "Available: {ofi+sockets, ofi+verbs, ofi+psm2} for TCP, Infiniband, "
                                                    "and Omni-Path, respectively. (Default ofi+sockets)\n"
                                                    "Libfabric must have enabled support verbs or psm2")
            ("auto_sm", "Enables intra-node communication (IPCs) via the `na+sm` (shared memory) protocol, "
                                                    "Libfabric must have enabled support verbs or psm2.")
            ("auto-sm", "Enables intra-node communication (IPCs) via the `na+sm` (shared memory) protocol, "
                        "instead of using the RPC protocol. (Default off)")
            ("version", "print version and exit");
            ("version", "Print version and exit.");
    po::variables_map vm{};
    po::store(po::parse_command_line(argc, argv, desc), vm);