diff options
-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 | ||||
-rw-r--r-- | tests/bugs/glusterd/bug-1446172-brick-mux-reset-brick.t | 79 | ||||
-rw-r--r-- | tests/include.rc | 7 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-brick-ops.c | 3 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-messages.h | 10 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-op-sm.c | 14 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-replace-brick.c | 3 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-reset-brick.c | 79 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-snapshot.c | 2 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 44 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.h | 12 | ||||
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-volume-ops.c | 2 |
14 files changed, 194 insertions, 85 deletions
diff --git a/cli/src/cli-cmd-volume.c b/cli/src/cli-cmd-volume.c index 61b6b2090a9..41995791cdd 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 574ee0eea33..cd016514cab 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 60492c1b9fc..1e92d675199 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 { \ diff --git a/tests/bugs/glusterd/bug-1446172-brick-mux-reset-brick.t b/tests/bugs/glusterd/bug-1446172-brick-mux-reset-brick.t new file mode 100644 index 00000000000..e6aaaa4e87c --- /dev/null +++ b/tests/bugs/glusterd/bug-1446172-brick-mux-reset-brick.t @@ -0,0 +1,79 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../traps.rc +. $(dirname $0)/../../volume.rc + +cleanup; + +function count_up_bricks { + $CLI --xml volume status | grep '<status>1' | wc -l +} + +function count_brick_processes { + pgrep glusterfsd | wc -l +} + +TEST glusterd + +TEST $CLI volume set all cluster.brick-multiplex on +push_trapfunc "$CLI volume set all cluster.brick-multiplex off" +push_trapfunc "cleanup" + +TEST $CLI volume create $V0 $H0:$B0/${V0}{0,1} +TEST $CLI volume create $V1 $H0:$B0/${V1}{0,1} + +TEST $CLI volume start $V0 +TEST $CLI volume start $V1 + +EXPECT_WITHIN $PROCESS_UP_TIMEOUT 4 count_up_bricks +EXPECT 1 count_brick_processes + +TEST glusterfs --volfile-id=$V0 --volfile-server=$H0 $M0; +# Create files +for i in {1..5} +do + echo $i > $M0/file$i.txt +done + +TEST $CLI volume reset-brick $V0 $H0:$B0/${V0}1 start + +EXPECT_WITHIN $PROCESS_DOWN_TIMEOUT 3 count_up_bricks +EXPECT 1 count_brick_processes + +# Negative case with brick killed but volume-id xattr present +TEST ! $CLI volume reset-brick $V0 $H0:$B0/${V0}1 $H0:$B0/${V0}1 commit + +# reset-brick commit force should work and should bring up the brick +TEST $CLI volume reset-brick $V0 $H0:$B0/${V0}1 $H0:$B0/${V0}1 commit force + +EXPECT_WITHIN $PROCESS_UP_TIMEOUT 4 count_up_bricks +EXPECT 1 count_brick_processes + +TEST glusterfs --volfile-id=$V1 --volfile-server=$H0 $M1; +# Create files +for i in {1..5} +do + echo $i > $M1/file$i.txt +done + +TEST $CLI volume reset-brick $V1 $H0:$B0/${V1}1 start + +EXPECT_WITHIN $PROCESS_DOWN_TIMEOUT 3 count_up_bricks +EXPECT 1 count_brick_processes + +# Simulate reset disk +for i in {1..5} +do + rm -rf $B0/${V1}1/file$i.txt +done + +setfattr -x trusted.glusterfs.volume-id $B0/${V1}1 +setfattr -x trusted.gfid $B0/${V1}1 + +# Test reset-brick commit. Using CLI_IGNORE_PARTITION since normal CLI uses +# the --wignore flag that essentially makes the command act like "commit force" +TEST $CLI_IGNORE_PARTITION volume reset-brick $V1 $H0:$B0/${V1}1 $H0:$B0/${V1}1 commit + +EXPECT_WITHIN $PROCESS_UP_TIMEOUT 4 count_up_bricks +EXPECT 1 count_brick_processes diff --git a/tests/include.rc b/tests/include.rc index 9e6cea4b487..d92361006eb 100644 --- a/tests/include.rc +++ b/tests/include.rc @@ -90,7 +90,12 @@ LOGDIR=$(gluster --print-logdir) statedumpdir=`gluster --print-statedumpdir`; # Default directory for statedump CLI="gluster --mode=script --wignore"; -CLI_NO_FORCE="gluster --mode-script"; +CLI_NO_FORCE="gluster --mode=script"; + +# CLI_IGNORE_PARTITION makes sure that the warning related to bricks being on +# root partition is ignored while running the command in a "no force" mode +CLI_IGNORE_PARTITION="gluster --mode=script --wignore-partition" + _GFS () { glusterfs "$@" local mount_ret=$? diff --git a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c index b1b13a49f71..21e3377b631 100644 --- a/xlators/mgmt/glusterd/src/glusterd-brick-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-brick-ops.c @@ -1883,7 +1883,8 @@ glusterd_op_stage_add_brick (dict_t *dict, char **op_errstr, dict_t *rsp_dict) ret = glusterd_validate_and_create_brickpath (brickinfo, volinfo->volume_id, - op_errstr, is_force); + op_errstr, is_force, + _gf_false); if (ret) goto out; diff --git a/xlators/mgmt/glusterd/src/glusterd-messages.h b/xlators/mgmt/glusterd/src/glusterd-messages.h index 8cfc26ce905..e66107c3b24 100644 --- a/xlators/mgmt/glusterd/src/glusterd-messages.h +++ b/xlators/mgmt/glusterd/src/glusterd-messages.h @@ -41,7 +41,7 @@ #define GLUSTERD_COMP_BASE GLFS_MSGID_GLUSTERD -#define GLFS_NUM_MESSAGES 600 +#define GLFS_NUM_MESSAGES 601 #define GLFS_MSGID_END (GLUSTERD_COMP_BASE + GLFS_NUM_MESSAGES + 1) /* Messaged with message IDs */ @@ -4853,6 +4853,14 @@ */ #define GD_MSG_GNFS_XLATOR_NOT_INSTALLED (GLUSTERD_COMP_BASE + 600) +/*! + * @messageid + * @diagnosis + * @recommendedaction + * + */ +#define GD_MSG_PIDFILE_UNLINKING (GLUSTERD_COMP_BASE + 601) + /*------------*/ #define glfs_msg_end_x GLFS_MSGID_END, "Invalid: End of messages" diff --git a/xlators/mgmt/glusterd/src/glusterd-op-sm.c b/xlators/mgmt/glusterd/src/glusterd-op-sm.c index 3558ae91059..1a12b0e7160 100644 --- a/xlators/mgmt/glusterd/src/glusterd-op-sm.c +++ b/xlators/mgmt/glusterd/src/glusterd-op-sm.c @@ -6196,8 +6196,6 @@ glusterd_bricks_select_stop_volume (dict_t *dict, char **op_errstr, glusterd_volinfo_t *volinfo = NULL; glusterd_brickinfo_t *brickinfo = NULL; glusterd_pending_node_t *pending_node = NULL; - glusterd_conf_t *conf = THIS->private; - char pidfile[PATH_MAX] = {0,}; ret = glusterd_op_stop_volume_args_get (dict, &volname, &flags); if (ret) @@ -6233,11 +6231,6 @@ glusterd_bricks_select_stop_volume (dict_t *dict, char **op_errstr, */ brickinfo->status = GF_BRICK_STOPPED; brickinfo->started_here = _gf_false; - GLUSTERD_GET_BRICK_PIDFILE (pidfile, volinfo, - brickinfo, conf); - gf_log (THIS->name, GF_LOG_INFO, - "unlinking pidfile %s", pidfile); - (void) sys_unlink (pidfile); } } @@ -6260,8 +6253,6 @@ glusterd_bricks_select_remove_brick (dict_t *dict, char **op_errstr, glusterd_pending_node_t *pending_node = NULL; int32_t command = 0; int32_t force = 0; - glusterd_conf_t *conf = THIS->private; - char pidfile[PATH_MAX] = {0,}; ret = dict_get_str (dict, "volname", &volname); @@ -6342,11 +6333,6 @@ glusterd_bricks_select_remove_brick (dict_t *dict, char **op_errstr, */ brickinfo->status = GF_BRICK_STOPPED; brickinfo->started_here = _gf_false; - GLUSTERD_GET_BRICK_PIDFILE (pidfile, volinfo, - brickinfo, conf); - gf_log (THIS->name, GF_LOG_INFO, - "unlinking pidfile %s", pidfile); - (void) sys_unlink (pidfile); } i++; } diff --git a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c index fb29c6efcfd..887c3496475 100644 --- a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c +++ b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c @@ -252,7 +252,8 @@ glusterd_op_stage_replace_brick (dict_t *dict, char **op_errstr, if (gf_is_local_addr (host)) { ret = glusterd_validate_and_create_brickpath (dst_brickinfo, volinfo->volume_id, - op_errstr, is_force); + op_errstr, is_force, + _gf_false); if (ret) goto out; } diff --git a/xlators/mgmt/glusterd/src/glusterd-reset-brick.c b/xlators/mgmt/glusterd/src/glusterd-reset-brick.c index 2e547c7e09f..c127d64d119 100644 --- a/xlators/mgmt/glusterd/src/glusterd-reset-brick.c +++ b/xlators/mgmt/glusterd/src/glusterd-reset-brick.c @@ -47,6 +47,7 @@ glusterd_reset_brick_prevalidate (dict_t *dict, char **op_errstr, char pidfile[PATH_MAX] = {0}; xlator_t *this = NULL; gf_boolean_t is_force = _gf_false; + int32_t ignore_partition = 0; pid_t pid = -1; uuid_t volume_id = {0,}; char *dup_dstbrick = NULL; @@ -153,11 +154,14 @@ glusterd_reset_brick_prevalidate (dict_t *dict, char **op_errstr, volinfo->rep_brick.src_brick = src_brickinfo; volinfo->rep_brick.dst_brick = dst_brickinfo; + ret = dict_get_int32 (dict, "ignore-partition", &ignore_partition); + ret = 0; if (gf_is_local_addr (host)) { ret = glusterd_validate_and_create_brickpath (dst_brickinfo, volinfo->volume_id, - op_errstr, is_force); + op_errstr, is_force, + ignore_partition); if (ret) goto out; } else { @@ -234,17 +238,16 @@ out: int glusterd_op_reset_brick (dict_t *dict, dict_t *rsp_dict) { - int ret = 0; - char *op = NULL; - glusterd_volinfo_t *volinfo = NULL; - char *volname = NULL; - xlator_t *this = NULL; - glusterd_conf_t *priv = NULL; - char *src_brick = NULL; - char *dst_brick = NULL; - glusterd_brickinfo_t *src_brickinfo = NULL; - glusterd_brickinfo_t *dst_brickinfo = NULL; - char pidfile[PATH_MAX] = {0,}; + int ret = 0; + char *op = NULL; + glusterd_volinfo_t *volinfo = NULL; + char *volname = NULL; + xlator_t *this = NULL; + glusterd_conf_t *priv = NULL; + char *src_brick = NULL; + char *dst_brick = NULL; + glusterd_brickinfo_t *src_brickinfo = NULL; + glusterd_brickinfo_t *dst_brickinfo = NULL; this = THIS; GF_ASSERT (this); @@ -289,26 +292,18 @@ glusterd_op_reset_brick (dict_t *dict, dict_t *rsp_dict) } if (!strcmp (op, "GF_RESET_OP_START")) { - (void) glusterd_brick_disconnect (src_brickinfo); - GLUSTERD_GET_BRICK_PIDFILE (pidfile, volinfo, - src_brickinfo, priv); - ret = glusterd_service_stop ("brick", pidfile, - SIGTERM, _gf_false); - if (ret == 0) { - glusterd_set_brick_status (src_brickinfo, - GF_BRICK_STOPPED); - (void) glusterd_brick_unlink_socket_file - (volinfo, src_brickinfo); - gf_msg (this->name, GF_LOG_INFO, 0, - GD_MSG_BRICK_CLEANUP_SUCCESS, - "Brick cleanup successful."); - } else { + ret = glusterd_volume_stop_glusterfs (volinfo, + src_brickinfo, + _gf_false); + if (ret) { gf_msg (this->name, GF_LOG_CRITICAL, 0, - GD_MSG_BRK_CLEANUP_FAIL, - "Unable to cleanup src brick"); - goto out; + GD_MSG_BRICK_STOP_FAIL, "Unable to stop" + " brick: %s:%s", src_brickinfo->hostname, + src_brickinfo->path); } + goto out; + } else if (!strcmp (op, "GF_RESET_OP_COMMIT") || !strcmp (op, "GF_RESET_OP_COMMIT_FORCE")) { ret = dict_get_str (dict, "dst-brick", &dst_brick); @@ -344,25 +339,17 @@ glusterd_op_reset_brick (dict_t *dict, dict_t *rsp_dict) if (ret) goto out; - if (gf_is_local_addr (dst_brickinfo->hostname)) { + if (gf_uuid_compare (dst_brickinfo->uuid, MY_UUID)) { gf_msg_debug (this->name, 0, "I AM THE DESTINATION HOST"); - (void) glusterd_brick_disconnect (src_brickinfo); - GLUSTERD_GET_BRICK_PIDFILE (pidfile, volinfo, - src_brickinfo, priv); - ret = glusterd_service_stop ("brick", pidfile, - SIGTERM, _gf_false); - if (ret == 0) { - glusterd_set_brick_status - (src_brickinfo, GF_BRICK_STOPPED); - (void) glusterd_brick_unlink_socket_file - (volinfo, src_brickinfo); - gf_msg (this->name, GF_LOG_INFO, 0, - GD_MSG_BRICK_CLEANUP_SUCCESS, - "Brick cleanup successful."); - } else { + ret = glusterd_volume_stop_glusterfs (volinfo, + src_brickinfo, + _gf_true); + if (ret) { gf_msg (this->name, GF_LOG_CRITICAL, 0, - GD_MSG_BRK_CLEANUP_FAIL, - "Unable to cleanup src brick"); + GD_MSG_BRICK_STOP_FAIL, + "Unable to stop brick: %s:%s", + src_brickinfo->hostname, + src_brickinfo->path); goto out; } } diff --git a/xlators/mgmt/glusterd/src/glusterd-snapshot.c b/xlators/mgmt/glusterd/src/glusterd-snapshot.c index 78a4652cf41..31f4d95f63d 100644 --- a/xlators/mgmt/glusterd/src/glusterd-snapshot.c +++ b/xlators/mgmt/glusterd/src/glusterd-snapshot.c @@ -2753,8 +2753,6 @@ glusterd_do_lvm_snapshot_remove (glusterd_volinfo_t *snap_vol, GLUSTERD_GET_BRICK_PIDFILE (pidfile, snap_vol, brickinfo, priv); if (gf_is_service_running (pidfile, &pid)) { - int send_attach_req (xlator_t *this, struct rpc_clnt *rpc, - char *path, int op); (void) send_attach_req (this, brickinfo->rpc, brickinfo->path, GLUSTERD_BRICK_TERMINATE); diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 0a4aea24d85..a66e04934db 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -96,8 +96,8 @@ int send_attach_req (xlator_t *this, struct rpc_clnt *rpc, char *path, int op); -static gf_boolean_t -is_brick_mx_enabled () +gf_boolean_t +is_brick_mx_enabled (void) { char *value = NULL; int ret = 0; @@ -1329,7 +1329,8 @@ out: int glusterd_validate_and_create_brickpath (glusterd_brickinfo_t *brickinfo, uuid_t volume_id, char **op_errstr, - gf_boolean_t is_force) + gf_boolean_t is_force, + gf_boolean_t ignore_partition) { int ret = -1; char parentdir[PATH_MAX] = {0,}; @@ -1403,8 +1404,14 @@ glusterd_validate_and_create_brickpath (glusterd_brickinfo_t *brickinfo, " Or use 'force' at the end of the command if" " you want to override this behavior.", brickinfo->hostname, brickinfo->path); - ret = -1; - goto out; + + /* If --wignore-partition flag is used, ignore warnings + * related to bricks being on root partition when 'force' + * is not used */ + if (!ignore_partition) { + ret = -1; + goto out; + } } } @@ -2074,13 +2081,15 @@ glusterd_brick_disconnect (glusterd_brickinfo_t *brickinfo) } int32_t -glusterd_volume_stop_glusterfs (glusterd_volinfo_t *volinfo, - glusterd_brickinfo_t *brickinfo, +glusterd_volume_stop_glusterfs (glusterd_volinfo_t *volinfo, + glusterd_brickinfo_t *brickinfo, gf_boolean_t del_brick) { xlator_t *this = NULL; - int ret = 0; + glusterd_conf_t *conf = NULL; + int ret = -1; char *op_errstr = NULL; + char pidfile[PATH_MAX] = {0,}; GF_ASSERT (volinfo); GF_ASSERT (brickinfo); @@ -2088,6 +2097,11 @@ glusterd_volume_stop_glusterfs (glusterd_volinfo_t *volinfo, this = THIS; GF_ASSERT (this); + conf = this->private; + GF_VALIDATE_OR_GOTO (this->name, conf, out); + + ret = 0; + if (del_brick) cds_list_del_init (&brickinfo->brick_list); @@ -2102,10 +2116,17 @@ glusterd_volume_stop_glusterfs (glusterd_volinfo_t *volinfo, * an actual signal instead. */ if (is_brick_mx_enabled ()) { + gf_msg_debug (this->name, 0, "About to send detach " + "request for brick %s:%s", + brickinfo->hostname, brickinfo->path); + (void) send_attach_req (this, brickinfo->rpc, brickinfo->path, GLUSTERD_BRICK_TERMINATE); } else { + gf_msg_debug (this->name, 0, "About to stop glusterfsd" + " for brick %s:%s", brickinfo->hostname, + brickinfo->path); (void) glusterd_brick_terminate (volinfo, brickinfo, NULL, 0, &op_errstr); if (op_errstr) { @@ -2119,6 +2140,10 @@ glusterd_volume_stop_glusterfs (glusterd_volinfo_t *volinfo, if (del_brick) glusterd_delete_brick (volinfo, brickinfo); + GLUSTERD_GET_BRICK_PIDFILE (pidfile, volinfo, brickinfo, conf); + gf_msg_debug (this->name, 0, "Unlinking pidfile %s", pidfile); + (void) sys_unlink (pidfile); +out: return ret; } @@ -6563,9 +6588,6 @@ glusterd_brick_stop (glusterd_volinfo_t *volinfo, goto out; } - gf_msg_debug (this->name, 0, "About to stop glusterfs" - " for brick %s:%s", brickinfo->hostname, - brickinfo->path); ret = glusterd_volume_stop_glusterfs (volinfo, brickinfo, del_brick); if (ret) { gf_msg (this->name, GF_LOG_CRITICAL, 0, diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.h b/xlators/mgmt/glusterd/src/glusterd-utils.h index d002ee45b6c..d694a312a41 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.h +++ b/xlators/mgmt/glusterd/src/glusterd-utils.h @@ -80,6 +80,8 @@ typedef struct glusterd_dict_ctx_ { char *prefix; } glusterd_dict_ctx_t; +gf_boolean_t is_brick_mx_enabled (void); + int glusterd_compare_lines (const void *a, const void *b); @@ -179,10 +181,13 @@ glusterd_volume_start_glusterfs (glusterd_volinfo_t *volinfo, gf_boolean_t wait); int32_t -glusterd_volume_stop_glusterfs (glusterd_volinfo_t *volinfo, - glusterd_brickinfo_t *brickinfo, +glusterd_volume_stop_glusterfs (glusterd_volinfo_t *volinfo, + glusterd_brickinfo_t *brickinfo, gf_boolean_t del_brick); +int +send_attach_req (xlator_t *this, struct rpc_clnt *rpc, char *path, int op); + glusterd_volinfo_t * glusterd_volinfo_ref (glusterd_volinfo_t *volinfo); @@ -310,7 +315,8 @@ glusterd_check_and_set_brick_xattr (char *host, char *path, uuid_t uuid, int glusterd_validate_and_create_brickpath (glusterd_brickinfo_t *brickinfo, uuid_t volume_id, char **op_errstr, - gf_boolean_t is_force); + gf_boolean_t is_force, + gf_boolean_t ignore_partition); int glusterd_sm_tr_log_transition_add (glusterd_sm_tr_log_t *log, int old_state, int new_state, diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c index 4738dc589d5..95056d501a3 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c +++ b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c @@ -1316,7 +1316,7 @@ glusterd_op_stage_create_volume (dict_t *dict, char **op_errstr, #endif ret = glusterd_validate_and_create_brickpath (brick_info, volume_uuid, op_errstr, - is_force); + is_force, _gf_false); if (ret) goto out; |