diff options
| -rw-r--r-- | api/src/glfs-mgmt.c | 11 | ||||
| -rw-r--r-- | glusterfsd/src/glusterfsd-mgmt.c | 5 | ||||
| -rw-r--r-- | libglusterfs/src/common-utils.c | 17 | ||||
| -rw-r--r-- | libglusterfs/src/glusterfs/common-utils.h | 3 | ||||
| -rw-r--r-- | libglusterfs/src/libglusterfs.sym | 1 | ||||
| -rw-r--r-- | rpc/rpc-lib/src/rpc-transport.c | 4 | ||||
| -rw-r--r-- | rpc/rpc-lib/src/rpc-transport.h | 2 | ||||
| -rw-r--r-- | xlators/features/snapview-server/src/snapview-server-mgmt.c | 5 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-handler.c | 11 | ||||
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 7 | 
10 files changed, 52 insertions, 14 deletions
diff --git a/api/src/glfs-mgmt.c b/api/src/glfs-mgmt.c index e8ad020c752..d502b4f46b6 100644 --- a/api/src/glfs-mgmt.c +++ b/api/src/glfs-mgmt.c @@ -697,9 +697,9 @@ volfile:       *  volfile if topology hasn't changed.       *  glusterfs_volfile_reconfigure returns 3 possible return states       *  return 0	     =======> reconfiguration of options has succeeded -     *  return 1	     =======> the graph has to be reconstructed and all the -     * xlators should be inited return -1(or -ve) =======> Some Internal Error -     * occurred during the operation +     *  return 1	     =======> the graph has to be reconstructed and all +     * the xlators should be inited return -1(or -ve) =======> Some Internal +     * Error occurred during the operation       */      pthread_mutex_lock(&fs->mutex); @@ -1031,7 +1031,10 @@ glfs_mgmt_init(struct glfs *fs)          !strcmp(cmd_args->volfile_server_transport, "unix")) {          ret = rpc_transport_unix_options_build(&options, host, 0);      } else { -        ret = rpc_transport_inet_options_build(&options, host, port); +        xlator_cmdline_option_t *opt = find_xlator_option_in_cmd_args_t( +            "address-family", cmd_args); +        ret = rpc_transport_inet_options_build(&options, host, port, +                                               (opt ? opt->value : NULL));      }      if (ret) diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c index 7c5ce523d26..f8934b184ed 100644 --- a/glusterfsd/src/glusterfsd-mgmt.c +++ b/glusterfsd/src/glusterfsd-mgmt.c @@ -2645,6 +2645,7 @@ glusterfs_mgmt_init(glusterfs_ctx_t *ctx)      int ret = -1;      int port = GF_DEFAULT_BASE_PORT;      char *host = NULL; +    xlator_cmdline_option_t *opt = NULL;      cmd_args = &ctx->cmd_args;      GF_VALIDATE_OR_GOTO(THIS->name, cmd_args->volfile_server, out); @@ -2663,7 +2664,9 @@ glusterfs_mgmt_init(glusterfs_ctx_t *ctx)          !strcmp(cmd_args->volfile_server_transport, "unix")) {          ret = rpc_transport_unix_options_build(&options, host, 0);      } else { -        ret = rpc_transport_inet_options_build(&options, host, port); +        opt = find_xlator_option_in_cmd_args_t("address-family", cmd_args); +        ret = rpc_transport_inet_options_build(&options, host, port, +                                               (opt ? opt->value : NULL));      }      if (ret)          goto out; diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index 4104c576fd2..0798661806d 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -503,8 +503,7 @@ gf_resolve_ip6(const char *hostname, uint16_t port, int family, void **dnscache,          if ((ret = getaddrinfo(hostname, port_str, &hints, &cache->first)) !=              0) {              gf_msg("resolver", GF_LOG_ERROR, 0, LG_MSG_GETADDRINFO_FAILED, -                   "getaddrinfo failed" -                   " (%s)", +                   "getaddrinfo failed (family:%d) (%s)", family,                     gai_strerror(ret));              GF_FREE(*dnscache); @@ -5328,3 +5327,17 @@ gf_replace_new_iatt_in_dict(dict_t *xdata)      return ret;  } + +xlator_cmdline_option_t * +find_xlator_option_in_cmd_args_t(const char *option_name, cmd_args_t *args) +{ +    xlator_cmdline_option_t *pos = NULL; +    xlator_cmdline_option_t *tmp = NULL; + +    list_for_each_entry_safe(pos, tmp, &args->xlator_options, cmd_args) +    { +        if (strcmp(pos->key, option_name) == 0) +            return pos; +    } +    return NULL; +} diff --git a/libglusterfs/src/glusterfs/common-utils.h b/libglusterfs/src/glusterfs/common-utils.h index e7101be4aab..9061861ce3b 100644 --- a/libglusterfs/src/glusterfs/common-utils.h +++ b/libglusterfs/src/glusterfs/common-utils.h @@ -1064,4 +1064,7 @@ gf_replace_old_iatt_in_dict(struct _dict *);  int  gf_replace_new_iatt_in_dict(struct _dict *); +xlator_cmdline_option_t * +find_xlator_option_in_cmd_args_t(const char *option_name, cmd_args_t *args); +  #endif /* _COMMON_UTILS_H */ diff --git a/libglusterfs/src/libglusterfs.sym b/libglusterfs/src/libglusterfs.sym index e03cc987c81..beeab5468f9 100644 --- a/libglusterfs/src/libglusterfs.sym +++ b/libglusterfs/src/libglusterfs.sym @@ -1149,3 +1149,4 @@ gf_replace_new_iatt_in_dict  gf_changelog_init  gf_changelog_register_generic  gf_gfid_generate_from_xxh64 +find_xlator_option_in_cmd_args_t diff --git a/rpc/rpc-lib/src/rpc-transport.c b/rpc/rpc-lib/src/rpc-transport.c index 0c9291380be..e6421fcfab5 100644 --- a/rpc/rpc-lib/src/rpc-transport.c +++ b/rpc/rpc-lib/src/rpc-transport.c @@ -648,7 +648,7 @@ out:  int  rpc_transport_inet_options_build(dict_t **options, const char *hostname, -                                 int port) +                                 int port, char *af)  {      dict_t *dict = NULL;      char *host = NULL; @@ -688,7 +688,7 @@ rpc_transport_inet_options_build(dict_t **options, const char *hostname,          goto out;      } -    ret = dict_set_str(dict, "address-family", addr_family); +    ret = dict_set_str(dict, "address-family", (af != NULL ? af : addr_family));      if (ret) {          gf_log(THIS->name, GF_LOG_WARNING, "failed to set address-family to %s",                 addr_family); diff --git a/rpc/rpc-lib/src/rpc-transport.h b/rpc/rpc-lib/src/rpc-transport.h index 18412cc85f7..7be1ba14a0c 100644 --- a/rpc/rpc-lib/src/rpc-transport.h +++ b/rpc/rpc-lib/src/rpc-transport.h @@ -307,7 +307,7 @@ rpc_transport_unix_options_build(dict_t **options, char *filepath,  int  rpc_transport_inet_options_build(dict_t **options, const char *hostname, -                                 int port); +                                 int port, char *af);  void  rpc_transport_cleanup(rpc_transport_t *); diff --git a/xlators/features/snapview-server/src/snapview-server-mgmt.c b/xlators/features/snapview-server/src/snapview-server-mgmt.c index 8e23b9adb2e..b608cdfcd44 100644 --- a/xlators/features/snapview-server/src/snapview-server-mgmt.c +++ b/xlators/features/snapview-server/src/snapview-server-mgmt.c @@ -86,6 +86,7 @@ svs_mgmt_init(xlator_t *this)      char *host = NULL;      cmd_args_t *cmd_args = NULL;      glusterfs_ctx_t *ctx = NULL; +    xlator_cmdline_option_t *opt = NULL;      GF_VALIDATE_OR_GOTO("snapview-server", this, out);      GF_VALIDATE_OR_GOTO(this->name, this->private, out); @@ -100,7 +101,9 @@ svs_mgmt_init(xlator_t *this)      if (cmd_args->volfile_server)          host = cmd_args->volfile_server; -    ret = rpc_transport_inet_options_build(&options, host, port); +    opt = find_xlator_option_in_cmd_args_t("address-family", cmd_args); +    ret = rpc_transport_inet_options_build(&options, host, port, +                                           (opt != NULL ? opt->value : NULL));      if (ret) {          gf_msg(this->name, GF_LOG_ERROR, 0, SVS_MSG_BUILD_TRNSPRT_OPT_FAILED,                 "failed to build the " diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index ab57c199954..614d34db670 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -3417,7 +3417,7 @@ out:  int  glusterd_transport_inet_options_build(dict_t **options, const char *hostname, -                                      int port) +                                      int port, char *af)  {      xlator_t *this = NULL;      dict_t *dict = NULL; @@ -3435,7 +3435,7 @@ glusterd_transport_inet_options_build(dict_t **options, const char *hostname,          port = GLUSTERD_DEFAULT_PORT;      /* Build default transport options */ -    ret = rpc_transport_inet_options_build(&dict, hostname, port); +    ret = rpc_transport_inet_options_build(&dict, hostname, port, af);      if (ret)          goto out; @@ -3489,6 +3489,7 @@ glusterd_friend_rpc_create(xlator_t *this, glusterd_peerinfo_t *peerinfo,      int ret = -1;      glusterd_peerctx_t *peerctx = NULL;      data_t *data = NULL; +    char *af = NULL;      peerctx = GF_CALLOC(1, sizeof(*peerctx), gf_gld_mt_peerctx_t);      if (!peerctx) @@ -3504,8 +3505,12 @@ glusterd_friend_rpc_create(xlator_t *this, glusterd_peerinfo_t *peerinfo,                                                       uniquely identify a                                                       peerinfo */ +    ret = dict_get_str(this->options, "transport.address-family", &af); +    if (ret) +        gf_log(this->name, GF_LOG_TRACE, +               "option transport.address-family is not set in xlator options");      ret = glusterd_transport_inet_options_build(&options, peerinfo->hostname, -                                                peerinfo->port); +                                                peerinfo->port, af);      if (ret)          goto out; diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index fd6e360a730..1aa6947fbba 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -2044,6 +2044,7 @@ glusterd_volume_start_glusterfs(glusterd_volinfo_t *volinfo,      int pid = -1;      int32_t len = 0;      glusterd_brick_proc_t *brick_proc = NULL; +    char *inet_family = NULL;      GF_ASSERT(volinfo);      GF_ASSERT(brickinfo); @@ -2219,6 +2220,12 @@ retry:      else if (volinfo->transport_type == GF_TRANSPORT_BOTH_TCP_RDMA)          runner_argprintf(&runner, "--volfile-server-transport=socket,rdma"); +    ret = dict_get_str(this->options, "transport.address-family", &inet_family); +    if (!ret) { +        runner_add_arg(&runner, "--xlator-option"); +        runner_argprintf(&runner, "transport.address-family=%s", inet_family); +    } +      if (volinfo->memory_accounting)          runner_add_arg(&runner, "--mem-accounting");  | 
