summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd/src/glusterd-brick-ops.c
diff options
context:
space:
mode:
authorDan Lambright <dlambrig@redhat.com>2015-09-01 20:40:40 -0400
committerDan Lambright <dlambrig@redhat.com>2015-09-02 05:39:12 -0700
commit37eeb91bd0154fcba0b0d4ebde8520c232c97512 (patch)
treed5899e9ad46aef75c6639483ae7050331200f407 /xlators/mgmt/glusterd/src/glusterd-brick-ops.c
parent3dbcb230ba833b108bd4cb35614ec6875d62eefa (diff)
cluster/tier: account for reordered layouts
This is a backport of 11092 > For a tiered volume the cold subvolume is always at a fixed > position in the graph. DHT's layout array, on the other hand, > may have the cold subvolume in either the first or second > index, therefore code cannot make any assumptions. The fix > searches the layout for the correct position dynamically > rather than statically. > The bug manifested itself in NFS, in which a newly attached > subvolume had not received an existing directory. This case > is a "stale entry" and marked as such in the layout for > that directory. The code did not see this, because it > looked at the wrong index in the layout array. > The fix also adds the check for decomissioned bricks, and > fixes a problem in detach tier related to starting the > rebalance process: we never received the right defrag > command and it did not get directed to the tier translator. > Change-Id: I77cdf9fbb0a777640c98003188565a79be9d0b56 > BUG: 1214289 > Signed-off-by: Dan Lambright <dlambrig@redhat.com> Change-Id: Idb2eec9ba25812f41de7f960a0314c92341d6b5d BUG: 1259081 Signed-off-by: Dan Lambright <dlambrig@redhat.com> Reviewed-on: http://review.gluster.org/12086 Tested-by: NetBSD Build System <jenkins@build.gluster.org> Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: mohammed rafi kc <rkavunga@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-brick-ops.c')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-brick-ops.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c
index 5e9a360280f..0d5f2e179fa 100644
--- a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c
+++ b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c
@@ -2206,6 +2206,7 @@ glusterd_op_remove_brick (dict_t *dict, char **op_errstr)
char *brick_tmpstr = NULL;
int start_remove = 0;
uint32_t commit_hash = 0;
+ int defrag_cmd = 0;
this = THIS;
GF_ASSERT (this);
@@ -2491,9 +2492,12 @@ glusterd_op_remove_brick (dict_t *dict, char **op_errstr)
volinfo->rebal.commit_hash = commit_hash;
}
/* perform the rebalance operations */
+ defrag_cmd = GF_DEFRAG_CMD_START_FORCE;
+ if (cmd == GF_OP_CMD_DETACH_START)
+ defrag_cmd = GF_DEFRAG_CMD_START_DETACH_TIER;
ret = glusterd_handle_defrag_start
(volinfo, err_str, sizeof (err_str),
- GF_DEFRAG_CMD_START_FORCE,
+ defrag_cmd,
glusterd_remove_brick_migrate_cbk, GD_OP_REMOVE_BRICK);
if (!ret)