diff options
author | Mohammed Rafi KC <rkavunga@redhat.com> | 2015-09-07 14:46:33 +0530 |
---|---|---|
committer | Dan Lambright <dlambrig@redhat.com> | 2015-10-09 10:00:11 -0700 |
commit | d777b2feaf55347177d6786657d68cc0547f7f73 (patch) | |
tree | fa3d3bc517fb43299f232b6e962aa24d67d11ca5 /xlators/mgmt/glusterd/src/glusterd-brick-ops.c | |
parent | 9e0c2c9d5e9b4f5df644911e29be4a611e0d2d42 (diff) |
tiering/glusterd: keep afr/ec xlators name constant
afr uses the translator name for locking purpose,
so it is mandatory to keep afr/ec xlators name constant
across graph change
currently when a tier is attached, afr names are appended
either with hot or cold. ie that breaks the above
mentioned constraint.
Backport of>
>Change-Id: I3699dcdaa8190bab3ba81cbc01e8fa126d37ba0d
>BUG: 1261276
>Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
>Reviewed-on: http://review.gluster.org/12134
>Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
>Tested-by: Gluster Build System <jenkins@build.gluster.com>
>Reviewed-by: Dan Lambright <dlambrig@redhat.com>
>Tested-by: Dan Lambright <dlambrig@redhat.com>
(cherry picked from commit 4ad9bc5faca60528345f1e9c95c22bd8402162c0)
Change-Id: I7bf5f22f112f1df1c05a0a8503d56029509d6292
BUG: 1261744
Signed-off-by: Mohammed Rafi KC <rkavunga@redhat.com>
Reviewed-on: http://review.gluster.org/12323
Tested-by: NetBSD Build System <jenkins@build.gluster.org>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Dan Lambright <dlambrig@redhat.com>
Tested-by: Dan Lambright <dlambrig@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-brick-ops.c')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-brick-ops.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c index 982e96b4970..dbd7264da56 100644 --- a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c @@ -2319,7 +2319,8 @@ glusterd_op_remove_brick (dict_t *dict, char **op_errstr) int start_remove = 0; uint32_t commit_hash = 0; int defrag_cmd = 0; - + int detach_commit = 0; + void *tier_info = NULL; this = THIS; GF_ASSERT (this); @@ -2443,6 +2444,7 @@ glusterd_op_remove_brick (dict_t *dict, char **op_errstr) case GF_OP_CMD_DETACH_COMMIT: case GF_OP_CMD_DETACH_COMMIT_FORCE: glusterd_op_perform_detach_tier (volinfo); + detach_commit = 1; /* fall through */ case GF_OP_CMD_COMMIT_FORCE: @@ -2532,6 +2534,13 @@ glusterd_op_remove_brick (dict_t *dict, char **op_errstr) goto out; i++; } + + if (detach_commit) { + /* Clear related information from volinfo */ + tier_info = ((void *)(&volinfo->tier_info)); + memset (tier_info, 0, sizeof (volinfo->tier_info)); + } + if (start_remove) volinfo->rebal.dict = dict_ref (bricks_dict); @@ -2625,9 +2634,8 @@ glusterd_op_remove_brick (dict_t *dict, char **op_errstr) if (GLUSTERD_STATUS_STARTED == volinfo->status) ret = glusterd_svcs_manager (volinfo); } - out: - if (ret && err_str[0] && op_errstr) + if (ret && err_str[0] && op_errstr) *op_errstr = gf_strdup (err_str); GF_FREE (brick_tmpstr); |