summaryrefslogtreecommitdiff
path: root/0151-mgmt-glusterd-Make-changes-related-to-cloudsync-xlat.patch
diff options
context:
space:
mode:
Diffstat (limited to '0151-mgmt-glusterd-Make-changes-related-to-cloudsync-xlat.patch')
-rw-r--r--0151-mgmt-glusterd-Make-changes-related-to-cloudsync-xlat.patch156
1 files changed, 156 insertions, 0 deletions
diff --git a/0151-mgmt-glusterd-Make-changes-related-to-cloudsync-xlat.patch b/0151-mgmt-glusterd-Make-changes-related-to-cloudsync-xlat.patch
new file mode 100644
index 0000000..d95db3d
--- /dev/null
+++ b/0151-mgmt-glusterd-Make-changes-related-to-cloudsync-xlat.patch
@@ -0,0 +1,156 @@
+From bffdcce7119f3ed68694df918e504cc241502835 Mon Sep 17 00:00:00 2001
+From: Anuradha Talur <atalur@commvault.com>
+Date: Mon, 19 Nov 2018 17:57:18 -0800
+Subject: [PATCH 151/169] mgmt/glusterd: Make changes related to cloudsync
+ xlator
+
+1) The placement of cloudsync xlator has been changed
+to make it shard xlator's child. If cloudsync has to
+work with shard in the graph, it needs to be child of shard.
+
+backport of: https://review.gluster.org/#/c/glusterfs/+/21681/
+
+> Change-Id: Ib55424fdcb7ce8edae9f19b8a6e3d3ba86c1f0c4
+> fixes: bz#1642168
+> Signed-off-by: Anuradha Talur <atalur@commvault.com>
+
+Change-Id: I68fd43b2c559cc2d9f05e1ab19784b174233d690
+Signed-off-by: Susant Palai <spalai@redhat.com>
+Reviewed-on: https://code.engineering.redhat.com/gerrit/172190
+Tested-by: RHGS Build Bot <nigelb@redhat.com>
+Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
+---
+ tests/basic/glusterd/check-cloudsync-ancestry.t | 48 +++++++++++++++++++++++++
+ tests/volume.rc | 21 +++++++++++
+ xlators/mgmt/glusterd/src/glusterd-volgen.c | 24 ++++++-------
+ 3 files changed, 81 insertions(+), 12 deletions(-)
+ create mode 100644 tests/basic/glusterd/check-cloudsync-ancestry.t
+
+diff --git a/tests/basic/glusterd/check-cloudsync-ancestry.t b/tests/basic/glusterd/check-cloudsync-ancestry.t
+new file mode 100644
+index 0000000..ff6ffee
+--- /dev/null
++++ b/tests/basic/glusterd/check-cloudsync-ancestry.t
+@@ -0,0 +1,48 @@
++#!/bin/bash
++
++. $(dirname $0)/../../include.rc
++. $(dirname $0)/../../volume.rc
++
++# When shard and cloudsync xlators enabled on a volume, shard xlator
++# should be an ancestor of cloudsync. This testcase is to check this condition.
++
++cleanup;
++TEST glusterd
++TEST pidof glusterd
++TEST $CLI volume create $V0 $H0:$B0/b1 $H0:$B0/b2 $H0:$B0/b3
++
++volfile=$(gluster system:: getwd)"/vols/$V0/trusted-$V0.tcp-fuse.vol"
++
++#Test that both shard and cloudsync are not loaded
++EXPECT "N" volgen_volume_exists $volfile $V0-shard features shard
++EXPECT "N" volgen_volume_exists $volfile $V0-cloudsync features cloudsync
++
++#Enable shard and cloudsync in that order and check if volfile is correct
++TEST $CLI volume set $V0 shard on
++TEST $CLI volume set $V0 cloudsync on
++
++#Test that both shard and cloudsync are loaded
++EXPECT "Y" volgen_volume_exists $volfile $V0-shard features shard
++EXPECT "Y" volgen_volume_exists $volfile $V0-cloudsync features cloudsync
++
++EXPECT "Y" volgen_check_ancestry $volfile features shard features cloudsync
++
++#Disable shard and cloudsync
++TEST $CLI volume set $V0 shard off
++TEST $CLI volume set $V0 cloudsync off
++
++#Test that both shard and cloudsync are not loaded
++EXPECT "N" volgen_volume_exists $volfile $V0-shard features shard
++EXPECT "N" volgen_volume_exists $volfile $V0-cloudsync features cloudsync
++
++#Enable cloudsync and shard in that order and check if volfile is correct
++TEST $CLI volume set $V0 cloudsync on
++TEST $CLI volume set $V0 shard on
++
++#Test that both shard and cloudsync are loaded
++EXPECT "Y" volgen_volume_exists $volfile $V0-shard features shard
++EXPECT "Y" volgen_volume_exists $volfile $V0-cloudsync features cloudsync
++
++EXPECT "Y" volgen_check_ancestry $volfile features shard features cloudsync
++
++cleanup;
+diff --git a/tests/volume.rc b/tests/volume.rc
+index b326098..a0ea3b8 100644
+--- a/tests/volume.rc
++++ b/tests/volume.rc
+@@ -891,3 +891,24 @@ function check_changelog_op {
+
+ $PYTHON $(dirname $0)/../../utils/changelogparser.py ${clog_path}/CHANGELOG | grep "$op" | wc -l
+ }
++
++function volgen_check_ancestry {
++ #Returns Y if ancestor_xl is an ancestor of $child_xl according to the volfile
++ local volfile="$1"
++
++ local child_xl_type="$2"
++ local child_xl="$3"
++
++ local ancestor_xl_type="$4"
++ local ancestor_xl="$5"
++
++ child_linenum=$(awk '/type $child_xl_type\/$child_xl/ {print FNR}' $volfile)
++ ancestor_linenum=$(awk '/type $ancestor_xl_type\/$ancestor_xl/ {print FNR}' $volfile)
++
++ if [ $child_linenum -lt $ancestor_linenum ];
++ then
++ echo "Y"
++ else
++ echo "N"
++ fi
++}
+diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c
+index 77aa705..8b58d40 100644
+--- a/xlators/mgmt/glusterd/src/glusterd-volgen.c
++++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c
+@@ -4360,6 +4360,18 @@ client_graph_builder(volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
+ "tcp", set_dict);
+ }
+
++ ret = dict_get_str_boolean(set_dict, "features.cloudsync", _gf_false);
++ if (ret == -1)
++ goto out;
++
++ if (ret) {
++ xl = volgen_graph_add(graph, "features/cloudsync", volname);
++ if (!xl) {
++ ret = -1;
++ goto out;
++ }
++ }
++
+ ret = dict_get_str_boolean(set_dict, "features.shard", _gf_false);
+ if (ret == -1)
+ goto out;
+@@ -4567,18 +4579,6 @@ client_graph_builder(volgen_graph_t *graph, glusterd_volinfo_t *volinfo,
+ if (ret)
+ return -1;
+
+- ret = dict_get_str_boolean(set_dict, "features.cloudsync", _gf_false);
+- if (ret == -1)
+- goto out;
+-
+- if (ret) {
+- xl = volgen_graph_add(graph, "features/cloudsync", volname);
+- if (!xl) {
+- ret = -1;
+- goto out;
+- }
+- }
+-
+ /* if the client is part of 'gfproxyd' server, then we need to keep the
+ volume name as 'gfproxyd-<volname>', for better portmapper options */
+ subvol = volname;
+--
+1.8.3.1
+