14f8ab
From 86df0ced1cac0e3c48f6149bb2f5442f8548f89e Mon Sep 17 00:00:00 2001
14f8ab
From: Sanju Rakonde <srakonde@redhat.com>
14f8ab
Date: Wed, 25 Dec 2019 21:56:32 +0530
14f8ab
Subject: [PATCH 390/449] glusterd: deafult options after volume reset
14f8ab
14f8ab
Problem: default option itransport.address-family is disappered
14f8ab
in volume info output after a volume reset.
14f8ab
14f8ab
Cause: with 3.8.0 onwards volume option transport.address-family
14f8ab
has default value, any volume which is created will have this
14f8ab
option set. So, volume info will show this in its output. But,
14f8ab
with reset volume, this option is not handled.
14f8ab
14f8ab
Solution: In glusterd_enable_default_options(), we should add this
14f8ab
option along with other default options. This function is called
14f8ab
by glusterd_options_reset() with volume reset command.
14f8ab
14f8ab
> upstream patch link: https://review.gluster.org/#/c/glusterfs/+/23921/
14f8ab
> fixes: bz#1786478
14f8ab
> Change-Id: I58f7aa24cf01f308c4efe6cae748cc3bc8b99b1d
14f8ab
> Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
14f8ab
14f8ab
BUG: 1781710
14f8ab
Change-Id: I58f7aa24cf01f308c4efe6cae748cc3bc8b99b1d
14f8ab
Signed-off-by: Sanju Rakonde <srakonde@redhat.com>
14f8ab
Reviewed-on: https://code.engineering.redhat.com/gerrit/202258
14f8ab
Tested-by: RHGS Build Bot <nigelb@redhat.com>
14f8ab
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
14f8ab
---
14f8ab
 tests/bugs/glusterd/optimized-basic-testcases.t |  5 +++++
14f8ab
 xlators/mgmt/glusterd/src/glusterd-utils.c      | 23 +++++++++++++++++++++++
14f8ab
 2 files changed, 28 insertions(+)
14f8ab
14f8ab
diff --git a/tests/bugs/glusterd/optimized-basic-testcases.t b/tests/bugs/glusterd/optimized-basic-testcases.t
14f8ab
index d700b5e..c7e8c32 100644
14f8ab
--- a/tests/bugs/glusterd/optimized-basic-testcases.t
14f8ab
+++ b/tests/bugs/glusterd/optimized-basic-testcases.t
14f8ab
@@ -69,6 +69,11 @@ TEST pidof glusterd;
14f8ab
 TEST $CLI volume create $V0 $H0:$B0/${V0}{1,2};
14f8ab
 EXPECT 'Created' volinfo_field $V0 'Status';
14f8ab
 
14f8ab
+#bug-1786478 - default volume option after volume reset
14f8ab
+addr_family=`volinfo_field $V0 'transport.address-family'`
14f8ab
+TEST $CLI volume reset $V0
14f8ab
+EXPECT $addr_family  volinfo_field $V0 'transport.address-family'
14f8ab
+
14f8ab
 #bug-955588 - uuid validation
14f8ab
 
14f8ab
 uuid=`grep UUID $GLUSTERD_WORKDIR/glusterd.info | cut -f2 -d=`
14f8ab
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
14f8ab
index c92cdf3..6654741 100644
14f8ab
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
14f8ab
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
14f8ab
@@ -13032,6 +13032,11 @@ glusterd_enable_default_options(glusterd_volinfo_t *volinfo, char *option)
14f8ab
     int ret = 0;
14f8ab
     xlator_t *this = NULL;
14f8ab
     glusterd_conf_t *conf = NULL;
14f8ab
+#ifdef IPV6_DEFAULT
14f8ab
+    char *addr_family = "inet6";
14f8ab
+#else
14f8ab
+    char *addr_family = "inet";
14f8ab
+#endif
14f8ab
 
14f8ab
     this = THIS;
14f8ab
     GF_ASSERT(this);
14f8ab
@@ -13109,6 +13114,24 @@ glusterd_enable_default_options(glusterd_volinfo_t *volinfo, char *option)
14f8ab
             }
14f8ab
         }
14f8ab
     }
14f8ab
+
14f8ab
+    if (conf->op_version >= GD_OP_VERSION_3_9_0) {
14f8ab
+        if (!option || !strcmp("transport.address-family", option)) {
14f8ab
+            if (volinfo->transport_type == GF_TRANSPORT_TCP) {
14f8ab
+                ret = dict_set_dynstr_with_alloc(
14f8ab
+                    volinfo->dict, "transport.address-family", addr_family);
14f8ab
+                if (ret) {
14f8ab
+                    gf_msg(this->name, GF_LOG_ERROR, errno,
14f8ab
+                           GD_MSG_DICT_SET_FAILED,
14f8ab
+                           "failed to set transport."
14f8ab
+                           "address-family on %s",
14f8ab
+                           volinfo->volname);
14f8ab
+                    goto out;
14f8ab
+                }
14f8ab
+            }
14f8ab
+        }
14f8ab
+    }
14f8ab
+
14f8ab
     if (conf->op_version >= GD_OP_VERSION_7_0) {
14f8ab
         ret = dict_set_dynstr_with_alloc(volinfo->dict,
14f8ab
                                          "storage.fips-mode-rchecksum", "on");
14f8ab
-- 
14f8ab
1.8.3.1
14f8ab