diff options
author | Vijay Bellur <vijay@gluster.com> | 2010-09-05 13:04:50 +0000 |
---|---|---|
committer | Vijay Bellur <vijay@dev.gluster.com> | 2010-09-05 22:28:30 -0700 |
commit | 07d84f0f77ea336b3c3ae65907261ed3242feacb (patch) | |
tree | d52cd9a6153cebc41fe962387fcfb3bdeba6c177 /xlators/mgmt/glusterd/src | |
parent | 1fb0d35691d385fc7677e42d2e06bb089dbf0b8b (diff) |
mgmt/glusterd: misc fixes in replace-brick and get volumes
Signed-off-by: Vijay Bellur <vijay@gluster.com>
Signed-off-by: Vijay Bellur <vijay@dev.gluster.com>
BUG: 971 (dynamic volume management)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=971
Diffstat (limited to 'xlators/mgmt/glusterd/src')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-handler.c | 14 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-op-sm.c | 50 |
2 files changed, 39 insertions, 25 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-handler.c b/xlators/mgmt/glusterd/src/glusterd-handler.c index 5a3aafe8e..b1f075167 100644 --- a/xlators/mgmt/glusterd/src/glusterd-handler.c +++ b/xlators/mgmt/glusterd/src/glusterd-handler.c @@ -2859,13 +2859,13 @@ glusterd_get_volumes (rpcsvc_request_t *req, dict_t *dict, int32_t flags) priv = THIS->private; GF_ASSERT (priv); - if (!list_empty (&priv->volumes)) { - volumes = dict_new (); - if (!volumes) { - gf_log ("", GF_LOG_WARNING, "Out of Memory"); - goto out; - } - } else { + volumes = dict_new (); + if (!volumes) { + gf_log ("", GF_LOG_WARNING, "Out of Memory"); + goto out; + } + + if (list_empty (&priv->volumes)) { ret = 0; goto respond; } diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c index 734910134..dd0214b38 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c @@ -1371,6 +1371,8 @@ rb_spawn_glusterfs_client (glusterd_volinfo_t *volinfo, "Successfully started glusterfs: brick=%s:%s", brickinfo->hostname, brickinfo->path); + memset (cmd_str, 0, sizeof (cmd_str)); + snprintf (cmd_str, 4096, "%s/vols/%s/%s", priv->workdir, volinfo->volname, RB_CLIENT_MOUNTPOINT); @@ -1449,6 +1451,7 @@ static const char *dst_brick_volfile_str = "volume src-posix\n" "type protocol/server\n" "option auth.addr.%s.allow *\n" "option listen-port 34034\n" + "option transport-type tcp\n" "subvolumes %s\n" "end-volume\n"; @@ -1505,8 +1508,8 @@ rb_mountpoint_mkdir (glusterd_volinfo_t *volinfo, RB_CLIENT_MOUNTPOINT); ret = mkdir (mount_point_path, 0777); - if (ret) { - gf_log ("", GF_LOG_DEBUG, "mkdir failed"); + if (ret && (errno != EEXIST)) { + gf_log ("", GF_LOG_DEBUG, "mkdir failed, errno: %d", errno); goto out; } @@ -1665,6 +1668,8 @@ rb_do_operation_start (glusterd_volinfo_t *volinfo, { char start_value[8192] = {0,}; int ret = -1; + gf_boolean_t src_host = _gf_false; + gf_boolean_t dst_host = _gf_false; if (!glusterd_is_local_addr (src_brickinfo->hostname)) { gf_log ("", GF_LOG_NORMAL, @@ -1681,6 +1686,31 @@ rb_do_operation_start (glusterd_volinfo_t *volinfo, dst_brickinfo->hostname, dst_brickinfo->path); + src_host = _gf_true; + + } + + if (!glusterd_is_local_addr (dst_brickinfo->hostname)) { + gf_log ("", GF_LOG_NORMAL, + "I AM THE DESTINATION HOST"); + dst_host = _gf_true; + ret = rb_spawn_destination_brick (volinfo, dst_brickinfo); + if (ret) { + gf_log ("", GF_LOG_DEBUG, + "Failed to spawn destination brick"); + goto out; + } + + } + + if (!src_host || !dst_host) { + gf_log ("", GF_LOG_DEBUG, + "Not a source or destination brick"); + ret = 0; + goto out; + } + + if (src_host) { ret = rb_send_xattr_command (volinfo, src_brickinfo, dst_brickinfo, RB_PUMP_START_CMD, start_value); @@ -1697,22 +1727,6 @@ rb_do_operation_start (glusterd_volinfo_t *volinfo, "client"); goto out; } - - } else if (!glusterd_is_local_addr (dst_brickinfo->hostname)) { - gf_log ("", GF_LOG_NORMAL, - "I AM THE DESTINATION HOST"); - ret = rb_spawn_destination_brick (volinfo, dst_brickinfo); - if (ret) { - gf_log ("", GF_LOG_DEBUG, - "Failed to spawn destination brick"); - goto out; - } - - } else { - gf_log ("", GF_LOG_DEBUG, - "Not a source or destination brick"); - ret = 0; - goto out; } ret = 0; |