From 2c2dbe72edb64b80144d9fb861886c0ceb5dc757 Mon Sep 17 00:00:00 2001 From: Krishnan Parthasarathi Date: Thu, 17 May 2012 14:14:13 +0530 Subject: glusterd: replace-brick should create dst brick path only once. Change-Id: I51d1a5315fa7a4290a63a59c1ef14b3e82cdc929 BUG: 822338 Signed-off-by: Krishnan Parthasarathi Reviewed-on: http://review.gluster.com/3354 Tested-by: Gluster Build System Reviewed-by: Amar Tumballi Reviewed-by: Vijay Bellur --- xlators/mgmt/glusterd/src/glusterd-replace-brick.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'xlators/mgmt/glusterd/src/glusterd-replace-brick.c') diff --git a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c index c31d8c781..588298326 100644 --- a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c +++ b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c @@ -321,8 +321,7 @@ glusterd_op_stage_replace_brick (dict_t *dict, char **op_errstr, break; case GF_REPLACE_OP_ABORT: - if ((!glusterd_is_rb_paused (volinfo)) && - (!glusterd_is_rb_started (volinfo))) { + if (!glusterd_is_rb_ongoing (volinfo)) { gf_log ("", GF_LOG_ERROR, "Replace brick is not" " started or paused for volume "); ret = -1; @@ -331,7 +330,7 @@ glusterd_op_stage_replace_brick (dict_t *dict, char **op_errstr, break; case GF_REPLACE_OP_COMMIT: - if (!glusterd_is_rb_started (volinfo)) { + if (!glusterd_is_rb_ongoing (volinfo)) { gf_log ("", GF_LOG_ERROR, "Replace brick is not " "started for volume "); ret = -1; @@ -445,7 +444,7 @@ glusterd_op_stage_replace_brick (dict_t *dict, char **op_errstr, if (ret) goto out; - if ((volinfo->rb_status ==GF_RB_STATUS_NONE) && + if (!glusterd_is_rb_ongoing (volinfo) && (replace_op == GF_REPLACE_OP_START || replace_op == GF_REPLACE_OP_COMMIT_FORCE)) { @@ -463,13 +462,15 @@ glusterd_op_stage_replace_brick (dict_t *dict, char **op_errstr, goto out; } - if (!glusterd_is_local_addr (host)) { + if (!glusterd_is_rb_ongoing (volinfo)) { ret = glusterd_brick_create_path (host, path, volinfo->volume_id, op_errstr); if (ret) goto out; - } else { + } + + if (glusterd_is_local_addr (host)) { ret = glusterd_friend_find (NULL, host, &peerinfo); if (ret) { snprintf (msg, sizeof (msg), "%s, is not a friend", -- cgit