diff options
author | Raghavendra Bhat <raghavendra@redhat.com> | 2013-11-29 12:13:28 +0530 |
---|---|---|
committer | Raghavendra Bhat <raghavendra@redhat.com> | 2013-12-02 18:20:52 +0530 |
commit | 30228525ee04694eb4e2fd367cab6779ffb769dc (patch) | |
tree | 51519c8f429dce671185fe9db861e2757fe31dc3 /xlators/mgmt/glusterd/src/glusterd-utils.c | |
parent | 16edf27198de7efca8a0eff3955d36dee9edde67 (diff) |
mgmt/glusterd: handle issues present in snapshot create and snap management
Change-Id: I94b5f6e00be7d1ff0c454e291c779dae7b423748
Signed-off-by: Raghavendra Bhat <raghavendra@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-utils.c')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 62 |
1 files changed, 55 insertions, 7 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index dd64867db..f7b117ba4 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -484,6 +484,10 @@ glusterd_volinfo_dup (glusterd_volinfo_t *volinfo, int32_t ret = -1; glusterd_volinfo_t *new_volinfo = NULL; xlator_t *this = NULL; + uuid_t username_id = {0, }; + uuid_t password_id = {0, }; + char *username = NULL; + char *password = NULL; this = THIS; GF_ASSERT (this); @@ -512,12 +516,31 @@ glusterd_volinfo_dup (glusterd_volinfo_t *volinfo, for authentication of trusted clients. If its not working, generate new username and passowd (uuid-generate) and use. */ - glusterd_auth_set_username (new_volinfo, volinfo->auth.username); - glusterd_auth_set_password (new_volinfo, volinfo->auth.password); + uuid_generate (username_id); + username = uuid_utoa (username_id); + if (!username) { + ret = -1; + gf_log (this->name, GF_LOG_WARNING, "could not get the " + "username"); + goto out; + } + uuid_generate (password_id); + password = uuid_utoa (password_id); + if (!password) { + ret = -1; + gf_log (this->name, GF_LOG_WARNING, "could not get the " + "password"); + goto out; + } + glusterd_auth_set_username (new_volinfo, username); + glusterd_auth_set_password (new_volinfo, password); *dup_volinfo = new_volinfo; out: + if (ret) + GF_FREE (new_volinfo); + return ret; } @@ -1504,12 +1527,12 @@ glusterd_snap_volume_start_glusterfs (glusterd_volinfo_t *volinfo, priv = this->private; GF_ASSERT (priv); - ret = _mk_snap_rundir_p (volinfo, snap_volinfo); + ret = _mk_rundir_p (volinfo); if (ret) goto out; GLUSTERD_GET_SNAP_BRICK_PIDFILE (pidfile, volinfo, - snap_volinfo->volname, brickinfo, - priv); + snap_volinfo->volname, + brickinfo, priv); if (glusterd_is_service_running (pidfile, NULL)) goto connect; @@ -1596,12 +1619,12 @@ glusterd_snap_volume_start_glusterfs (glusterd_volinfo_t *volinfo, runner_argprintf (&runner, "%d,%d", port, rdma_port); runner_add_arg (&runner, "--xlator-option"); runner_argprintf (&runner, "%s-server.transport.rdma.listen-port=%d", - volinfo->volname, rdma_port); + snap_volinfo->volname, rdma_port); } runner_add_arg (&runner, "--xlator-option"); runner_argprintf (&runner, "%s-server.listen-port=%d", - volinfo->volname, port); + snap_volinfo->volname, port); if (volinfo->memory_accounting) runner_add_arg (&runner, "--mem-accounting"); @@ -4403,16 +4426,38 @@ glusterd_restart_bricks (glusterd_conf_t *conf) glusterd_brickinfo_t *brickinfo = NULL; gf_boolean_t start_nodesvcs = _gf_false; int ret = 0; + glusterd_snap_t *snap = NULL; + glusterd_volinfo_t *snap_volume = NULL; list_for_each_entry (volinfo, &conf->volumes, vol_list) { if (volinfo->status != GLUSTERD_STATUS_STARTED) continue; + if (volinfo->is_snap_volume) + continue; start_nodesvcs = _gf_true; + gf_log (THIS->name, GF_LOG_DEBUG, "starting the volume %s", + volinfo->volname); list_for_each_entry (brickinfo, &volinfo->bricks, brick_list) { glusterd_brick_start (volinfo, brickinfo, _gf_false); } } + list_for_each_entry (volinfo, &conf->volumes, vol_list) { + if (volinfo->is_snap_volume) + continue; + list_for_each_entry (snap, &volinfo->snaps, snap_list) { + snap_volume = snap->snap_volume; + GF_ASSERT (snap_volume); + list_for_each_entry (brickinfo, &snap_volume->bricks, + brick_list) { + glusterd_snap_brick_start (volinfo, snap_volume, + brickinfo, _gf_false); + } + } + } + + //TODO: start consistency groups also + if (start_nodesvcs) glusterd_nodesvcs_handle_graph_change (NULL); @@ -7650,6 +7695,9 @@ glusterd_snap_use_rsp_dict (dict_t *dst, dict_t *src) } break; default: + // copy the response dictinary's contents to the dict to be + // sent back to the cli + dict_copy (src, dst); break; } |