diff options
Diffstat (limited to 'api/src/glfs.c')
| -rw-r--r-- | api/src/glfs.c | 75 | 
1 files changed, 25 insertions, 50 deletions
diff --git a/api/src/glfs.c b/api/src/glfs.c index 2a7ae2f3986..6724534fb31 100644 --- a/api/src/glfs.c +++ b/api/src/glfs.c @@ -412,9 +412,9 @@ pub_glfs_set_volfile_server (struct glfs *fs, const char *transport,                               const char *host, int port)  {          cmd_args_t            *cmd_args = NULL; -        server_cmdline_t      *server = NULL; -        server_cmdline_t      *tmp = NULL;          int                    ret = -1; +        char                  *server_host = NULL; +        char                  *server_transport = NULL;          if (!fs || !host) {                  errno = EINVAL; @@ -425,21 +425,10 @@ pub_glfs_set_volfile_server (struct glfs *fs, const char *transport,          __GLFS_ENTRY_VALIDATE_FS (fs, invalid_fs);          cmd_args = &fs->ctx->cmd_args; -          cmd_args->max_connect_attempts = 1; -        server = GF_CALLOC (1, sizeof (server_cmdline_t), -                            glfs_mt_server_cmdline_t); - -        if (!server) { -                errno = ENOMEM; -                goto out; -        } - -        INIT_LIST_HEAD (&server->list); - -        server->volfile_server = gf_strdup (host); -        if (!server->volfile_server) { +        server_host = gf_strdup (host); +        if (!server_host) {                  errno = ENOMEM;                  goto out;          } @@ -447,9 +436,10 @@ pub_glfs_set_volfile_server (struct glfs *fs, const char *transport,          if (transport) {                  /* volfile fetch support over tcp|unix only */                  if (!strcmp(transport, "tcp") || !strcmp(transport, "unix")) { -                        server->transport = gf_strdup (transport); +                        server_transport = gf_strdup (transport);                  } else if (!strcmp(transport, "rdma")) { -                        server->transport = gf_strdup ("tcp"); +                        server_transport = +                                gf_strdup (GF_DEFAULT_VOLFILE_TRANSPORT);                          gf_msg ("glfs", GF_LOG_WARNING, EINVAL,                                  API_MSG_INVALID_ENTRY,                                  "transport RDMA is deprecated, " @@ -460,55 +450,39 @@ pub_glfs_set_volfile_server (struct glfs *fs, const char *transport,                                  "transport %s is not supported, "                                  "possible values tcp|unix",                                  transport); -                        ret = -1;                          goto out;                  }          } else { -                server->transport = gf_strdup (GF_DEFAULT_VOLFILE_TRANSPORT); +                server_transport = gf_strdup (GF_DEFAULT_VOLFILE_TRANSPORT);          } -        if (!server->transport) { +        if (!server_transport) {                  errno = ENOMEM;                  goto out;          } -        if (strcmp(server->transport, "unix")) { -                if (port) { -                        server->port = port; -                } else { -                        server->port = GF_DEFAULT_BASE_PORT; -                } -        } else { -                server->port = 0; +        if (!port) { +                port = GF_DEFAULT_BASE_PORT;          } -        if (!cmd_args->volfile_server) { -                cmd_args->volfile_server = server->volfile_server; -                cmd_args->volfile_server_transport = server->transport; -                cmd_args->volfile_server_port = server->port; -                cmd_args->curr_server = server; +        if (!strcmp(server_transport, "unix")) { +                port = 0;          } -        list_for_each_entry(tmp, &cmd_args->volfile_servers, list) { -                if ((!strcmp(tmp->volfile_server, server->volfile_server) && -                     !strcmp(tmp->transport, server->transport) && -                     (tmp->port == server->port))) { -                        errno = EEXIST; -                        ret = -1; -                        goto out; -                } +        ret = gf_set_volfile_server_common(cmd_args, server_host, +                                           server_transport, port); +        if (ret) { +                gf_log ("glfs", GF_LOG_ERROR, +                        "failed to set volfile server: %s", strerror (errno));          } -        list_add_tail (&server->list, &cmd_args->volfile_servers); - -        ret = 0;  out: -        if (ret == -1) { -                if (server) { -                        GF_FREE (server->volfile_server); -                        GF_FREE (server->transport); -                        GF_FREE (server); -                } +        if (server_host) { +                GF_FREE (server_host); +        } + +        if (server_transport) { +                GF_FREE (server_transport);          }          __GLFS_EXIT_FS; @@ -823,6 +797,7 @@ pub_glfs_new (const char *volname)                  goto out;          fs->ctx = ctx; +        fs->ctx->process_mode = GF_CLIENT_PROCESS;          ret = glfs_set_logging (fs, "/dev/null", 0);          if (ret)  | 
