e7a346
From b69a36e8c61a0e1d45b3def6436d223bd14e76ef Mon Sep 17 00:00:00 2001
e7a346
From: Sunny Kumar <sunkumar@redhat.com>
e7a346
Date: Tue, 28 Nov 2017 13:37:43 +0530
e7a346
Subject: [PATCH 098/128] snapshot : snapshot creation failed after brick
e7a346
 reset/replace
e7a346
e7a346
Problem : snapshot creation was failing after brick reset/replace
e7a346
e7a346
Fix : changed code to set mount_dir value in rsp_dict during prerequisites
e7a346
      phase i.e glusterd_brick_op_prerequisites call and removed form prevalidate
e7a346
      phase.
e7a346
Upstream patch : https://review.gluster.org/c/18730/
e7a346
e7a346
>Signed-off-by: Sunny Kumar <sunkumar@redhat.com>
e7a346
>BUG: 1512451
e7a346
e7a346
BUG: 1507394
e7a346
Change-Id: Ief5d0fafe882a7eb1a7da8535b7c7ce6f011604c
e7a346
Signed-off-by: Sunny Kumar <sunkumar@redhat.com>
e7a346
Reviewed-on: https://code.engineering.redhat.com/gerrit/124467
e7a346
Tested-by: RHGS Build Bot <nigelb@redhat.com>
e7a346
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
e7a346
---
e7a346
 ...51-snapshot-creation-failed-after-brick-reset.t | 39 ++++++++++++++++++++++
e7a346
 xlators/mgmt/glusterd/src/glusterd-replace-brick.c |  8 -----
e7a346
 xlators/mgmt/glusterd/src/glusterd-reset-brick.c   | 10 ------
e7a346
 xlators/mgmt/glusterd/src/glusterd-utils.c         |  9 +++++
e7a346
 4 files changed, 48 insertions(+), 18 deletions(-)
e7a346
 create mode 100644 tests/bugs/snapshot/bug-1512451-snapshot-creation-failed-after-brick-reset.t
e7a346
e7a346
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
e7a346
new file mode 100644
e7a346
index 0000000..0624a5d
e7a346
--- /dev/null
e7a346
+++ b/tests/bugs/snapshot/bug-1512451-snapshot-creation-failed-after-brick-reset.t
e7a346
@@ -0,0 +1,39 @@
e7a346
+#!/bin/bash
e7a346
+
e7a346
+. $(dirname $0)/../../include.rc
e7a346
+. $(dirname $0)/../../cluster.rc
e7a346
+. $(dirname $0)/../../volume.rc
e7a346
+. $(dirname $0)/../../snapshot.rc
e7a346
+
e7a346
+cleanup;
e7a346
+TEST verify_lvm_version
e7a346
+TEST launch_cluster 2
e7a346
+TEST setup_lvm 2
e7a346
+
e7a346
+TEST $CLI_1 peer probe $H2
e7a346
+EXPECT_WITHIN $PROBE_TIMEOUT 1 peer_count
e7a346
+
e7a346
+TEST $CLI_1 volume create $V0 $H1:$L1/B1 $H2:$L2/B1
e7a346
+EXPECT 'Created' volinfo_field $V0 'Status'
e7a346
+
e7a346
+TEST $CLI_1 volume start $V0
e7a346
+EXPECT 'Started' volinfo_field $V0 'Status'
e7a346
+
e7a346
+TEST $CLI_1 snapshot create ${V0}_snap1 ${V0} no-timestamp
e7a346
+TEST snapshot_exists 1 ${V0}_snap1
e7a346
+
e7a346
+TEST $CLI_1 snapshot delete ${V0}_snap1
e7a346
+TEST ! snapshot_exists 1 ${V0}_snap1
e7a346
+
e7a346
+TEST $CLI_1 volume reset-brick $V0 $H1:$L1/B1 start
e7a346
+TEST $CLI_1 volume reset-brick $V0 $H1:$L1/B1 $H1:$L1/B1 commit force
e7a346
+
e7a346
+EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status_1 $V0 $H1 $L1/B1
e7a346
+
e7a346
+TEST $CLI_1 snapshot create ${V0}_snap1 ${V0} no-timestamp
e7a346
+TEST snapshot_exists 1 ${V0}_snap1
e7a346
+
e7a346
+TEST $CLI_1 snapshot delete ${V0}_snap1
e7a346
+TEST ! snapshot_exists 1 ${V0}_snap1
e7a346
+
e7a346
+cleanup;
e7a346
diff --git a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c
e7a346
index 18fc741..0e28608 100644
e7a346
--- a/xlators/mgmt/glusterd/src/glusterd-replace-brick.c
e7a346
+++ b/xlators/mgmt/glusterd/src/glusterd-replace-brick.c
e7a346
@@ -319,14 +319,6 @@ glusterd_op_stage_replace_brick (dict_t *dict, char **op_errstr,
e7a346
                         goto out;
e7a346
                 }
e7a346
 
e7a346
-                ret = dict_set_dynstr_with_alloc (rsp_dict, "brick1.mount_dir",
e7a346
-                                                  dst_brickinfo->mount_dir);
e7a346
-                if (ret) {
e7a346
-                        gf_msg (this->name, GF_LOG_ERROR, 0,
e7a346
-                                GD_MSG_DICT_SET_FAILED,
e7a346
-                                "Failed to set brick1.mount_dir");
e7a346
-                        goto out;
e7a346
-                }
e7a346
 
e7a346
                 ret = dict_set_int32 (rsp_dict, "brick_count", 1);
e7a346
                 if (ret) {
e7a346
diff --git a/xlators/mgmt/glusterd/src/glusterd-reset-brick.c b/xlators/mgmt/glusterd/src/glusterd-reset-brick.c
e7a346
index abb44e0..10ee6f4 100644
e7a346
--- a/xlators/mgmt/glusterd/src/glusterd-reset-brick.c
e7a346
+++ b/xlators/mgmt/glusterd/src/glusterd-reset-brick.c
e7a346
@@ -208,16 +208,6 @@ glusterd_reset_brick_prevalidate (dict_t *dict, char **op_errstr,
e7a346
                 goto out;
e7a346
         }
e7a346
 
e7a346
-        ret = dict_set_dynstr_with_alloc (rsp_dict,
e7a346
-                                  "brick1.mount_dir",
e7a346
-                                   dst_brickinfo->mount_dir);
e7a346
-        if (ret) {
e7a346
-                gf_msg (this->name, GF_LOG_ERROR, 0,
e7a346
-                        GD_MSG_DICT_SET_FAILED,
e7a346
-                        "Failed to set brick1.mount_dir");
e7a346
-                goto out;
e7a346
-        }
e7a346
-
e7a346
         ret = dict_set_int32 (rsp_dict, "brick_count", 1);
e7a346
         if (ret) {
e7a346
                 gf_msg (this->name, GF_LOG_ERROR, 0,
e7a346
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
e7a346
index f611fbb..23fc6e9 100644
e7a346
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
e7a346
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
e7a346
@@ -13648,6 +13648,15 @@ glusterd_brick_op_prerequisites (dict_t *dict,
e7a346
                                         (*src_brickinfo)->port);
e7a346
                         }
e7a346
                 }
e7a346
+                /* setting mount_dir */
e7a346
+                ret = dict_set_dynstr_with_alloc (rsp_dict, "brick1.mount_dir",
e7a346
+                                                  (*src_brickinfo)->mount_dir);
e7a346
+                if (ret) {
e7a346
+                        gf_msg (this->name, GF_LOG_ERROR, 0,
e7a346
+                                GD_MSG_DICT_SET_FAILED,
e7a346
+                                "Failed to set brick1.mount_dir");
e7a346
+                        goto out;
e7a346
+                }
e7a346
 
e7a346
                 v = *volinfo;
e7a346
                 b = *src_brickinfo;
e7a346
-- 
e7a346
1.8.3.1
e7a346