diff options
| author | Sunny Kumar <sunkumar@redhat.com> | 2017-11-13 13:47:53 +0530 | 
|---|---|---|
| committer | Atin Mukherjee <amukherj@redhat.com> | 2017-11-28 07:27:29 +0000 | 
| commit | 0fa39220603233dc0030eeedfc7f05947c35da7c (patch) | |
| tree | 9fb8c2c964c174c4dc3a4c5928854020af213b13 | |
| parent | 9fa848353b0b177d68c4dcb03723a8cfe43159f3 (diff) | |
snapshot : snapshot creation failed after brick reset/replace
Problem : snapshot creation was failing after brick reset/replace
Fix : changed code to set mount_dir value in rsp_dict during prerequisites
      phase i.e glusterd_brick_op_prerequisites call and removed form prevalidate
      phase.
Signed-off-by: Sunny Kumar <sunkumar@redhat.com>
Change-Id: Ief5d0fafe882a7eb1a7da8535b7c7ce6f011604c
BUG: 1512451
4 files changed, 48 insertions, 18 deletions
diff --git a/tests/bugs/snapshot/bug-1512451-snapshot-creation-failed-after-brick-reset.t b/tests/bugs/snapshot/bug-1512451-snapshot-creation-failed-after-brick-reset.t new file mode 100644 index 00000000000..0624a5db977 --- /dev/null +++ b/tests/bugs/snapshot/bug-1512451-snapshot-creation-failed-after-brick-reset.t @@ -0,0 +1,39 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../cluster.rc +. $(dirname $0)/../../volume.rc +. $(dirname $0)/../../snapshot.rc + +cleanup; +TEST verify_lvm_version +TEST launch_cluster 2 +TEST setup_lvm 2 + +TEST $CLI_1 peer probe $H2 +EXPECT_WITHIN $PROBE_TIMEOUT 1 peer_count + +TEST $CLI_1 volume create $V0 $H1:$L1/B1 $H2:$L2/B1 +EXPECT 'Created' volinfo_field $V0 'Status' + +TEST $CLI_1 volume start $V0 +EXPECT 'Started' volinfo_field $V0 'Status' + +TEST $CLI_1 snapshot create ${V0}_snap1 ${V0} no-timestamp +TEST snapshot_exists 1 ${V0}_snap1 + +TEST $CLI_1 snapshot delete ${V0}_snap1 +TEST ! snapshot_exists 1 ${V0}_snap1 + +TEST $CLI_1 volume reset-brick $V0 $H1:$L1/B1 start +TEST $CLI_1 volume reset-brick $V0 $H1:$L1/B1 $H1:$L1/B1 commit force + +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status_1 $V0 $H1 $L1/B1 + +TEST $CLI_1 snapshot create ${V0}_snap1 ${V0} no-timestamp +TEST snapshot_exists 1 ${V0}_snap1 + +TEST $CLI_1 snapshot delete ${V0}_snap1 +TEST ! snapshot_exists 1 ${V0}_snap1 + +cleanup; diff --git a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c index 08a6df0235f..f282c328387 100644 --- a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c +++ b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c @@ -319,14 +319,6 @@ glusterd_op_stage_replace_brick (dict_t *dict, char **op_errstr,                          goto out;                  } -                ret = dict_set_dynstr_with_alloc (rsp_dict, "brick1.mount_dir", -                                                  dst_brickinfo->mount_dir); -                if (ret) { -                        gf_msg (this->name, GF_LOG_ERROR, 0, -                                GD_MSG_DICT_SET_FAILED, -                                "Failed to set brick1.mount_dir"); -                        goto out; -                }                  ret = dict_set_int32 (rsp_dict, "brick_count", 1);                  if (ret) { diff --git a/xlators/mgmt/glusterd/src/glusterd-reset-brick.c b/xlators/mgmt/glusterd/src/glusterd-reset-brick.c index abb44e01df7..10ee6f4ef62 100644 --- a/xlators/mgmt/glusterd/src/glusterd-reset-brick.c +++ b/xlators/mgmt/glusterd/src/glusterd-reset-brick.c @@ -208,16 +208,6 @@ glusterd_reset_brick_prevalidate (dict_t *dict, char **op_errstr,                  goto out;          } -        ret = dict_set_dynstr_with_alloc (rsp_dict, -                                  "brick1.mount_dir", -                                   dst_brickinfo->mount_dir); -        if (ret) { -                gf_msg (this->name, GF_LOG_ERROR, 0, -                        GD_MSG_DICT_SET_FAILED, -                        "Failed to set brick1.mount_dir"); -                goto out; -        } -          ret = dict_set_int32 (rsp_dict, "brick_count", 1);          if (ret) {                  gf_msg (this->name, GF_LOG_ERROR, 0, diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index a50a294176b..fe96d6be094 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -13884,6 +13884,15 @@ glusterd_brick_op_prerequisites (dict_t *dict,                                          (*src_brickinfo)->port);                          }                  } +                /* setting mount_dir */ +                ret = dict_set_dynstr_with_alloc (rsp_dict, "brick1.mount_dir", +                                                  (*src_brickinfo)->mount_dir); +                if (ret) { +                        gf_msg (this->name, GF_LOG_ERROR, 0, +                                GD_MSG_DICT_SET_FAILED, +                                "Failed to set brick1.mount_dir"); +                        goto out; +                }                  v = *volinfo;                  b = *src_brickinfo;  | 
