diff options
author | Dan Lambright <dlambrig@redhat.com> | 2015-09-01 20:40:40 -0400 |
---|---|---|
committer | Dan Lambright <dlambrig@redhat.com> | 2015-09-02 05:39:12 -0700 |
commit | 37eeb91bd0154fcba0b0d4ebde8520c232c97512 (patch) | |
tree | d5899e9ad46aef75c6639483ae7050331200f407 /xlators/mgmt/glusterd/src/glusterd-brick-ops.c | |
parent | 3dbcb230ba833b108bd4cb35614ec6875d62eefa (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.c | 6 |
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) |