diff options
author | Samikshan Bairagya <samikshan@gmail.com> | 2017-04-24 22:00:17 +0530 |
---|---|---|
committer | Jeff Darcy <jeff@pl.atyp.us> | 2017-05-10 18:58:21 +0000 |
commit | 74383e3ec6f8244b3de9bf14016452498c1ddcf0 (patch) | |
tree | abf49a206ce37fce7cc863571529cb095f9084da /cli | |
parent | d5865881de5653a0e810093a9867ab3962d00f67 (diff) |
glusterd: Make reset-brick work correctly if brick-mux is on
Reset brick currently kills of the corresponding brick process.
However, with brick multiplexing enabled, stopping the brick
process would render all bricks attached to it unavailable. To
handle this correctly, we need to make sure that the brick process
is terminated only if brick-multiplexing is disabled. Otherwise,
we should send the GLUSTERD_BRICK_TERMINATE rpc to the respective
brick process to detach the brick that is to be reset.
Change-Id: I69002d66ffe6ec36ef48af09b66c522c6d35ac58
BUG: 1446172
Signed-off-by: Samikshan Bairagya <samikshan@gmail.com>
Reviewed-on: https://review.gluster.org/17128
Smoke: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
Diffstat (limited to 'cli')
-rw-r--r-- | cli/src/cli-cmd-volume.c | 10 | ||||
-rw-r--r-- | cli/src/cli.c | 5 | ||||
-rw-r--r-- | cli/src/cli.h | 9 |
3 files changed, 20 insertions, 4 deletions
diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c index 61b6b20..4199579 100644 --- a/cli/src/cli-cmd-volume.c +++ b/cli/src/cli-cmd-volume.c @@ -2087,6 +2087,7 @@ cli_cmd_volume_reset_brick_cbk (struct cli_state *state, if (!frame) goto out; + ret = cli_cmd_volume_reset_brick_parse (words, wordcount, &options); if (ret) { @@ -2095,6 +2096,15 @@ cli_cmd_volume_reset_brick_cbk (struct cli_state *state, goto out; } + if (state->mode & GLUSTER_MODE_WIGNORE_PARTITION) { + ret = dict_set_int32 (options, "ignore-partition", _gf_true); + if (ret) { + gf_log ("cli", GF_LOG_ERROR, "Failed to set ignore-" + "partition option"); + goto out; + } + } + CLI_LOCAL_INIT (local, words, frame, options); if (proc->fn) { diff --git a/cli/src/cli.c b/cli/src/cli.c index 574ee0e..cd01651 100644 --- a/cli/src/cli.c +++ b/cli/src/cli.c @@ -348,6 +348,11 @@ cli_opt_parse (char *opt, struct cli_state *state) return 0; } + if (strcmp (opt, "wignore-partition") == 0) { + state->mode |= GLUSTER_MODE_WIGNORE_PARTITION; + return 0; + } + if (strcmp (opt, "wignore") == 0) { state->mode |= GLUSTER_MODE_WIGNORE; return 0; diff --git a/cli/src/cli.h b/cli/src/cli.h index 60492c1..1e92d67 100644 --- a/cli/src/cli.h +++ b/cli/src/cli.h @@ -56,10 +56,11 @@ typedef enum { MAX } values; -#define GLUSTER_MODE_SCRIPT (1 << 0) -#define GLUSTER_MODE_ERR_FATAL (1 << 1) -#define GLUSTER_MODE_XML (1 << 2) -#define GLUSTER_MODE_WIGNORE (1 << 3) +#define GLUSTER_MODE_SCRIPT (1 << 0) +#define GLUSTER_MODE_ERR_FATAL (1 << 1) +#define GLUSTER_MODE_XML (1 << 2) +#define GLUSTER_MODE_WIGNORE (1 << 3) +#define GLUSTER_MODE_WIGNORE_PARTITION (1 << 4) #define GLUSTERD_GET_QUOTA_LIST_MOUNT_PATH(abspath, volname, path) do { \ |