From e40d0c399333e1ef62ff104b5cd35d8a5baa75f4 Mon Sep 17 00:00:00 2001 From: Sanju Rakonde Date: Wed, 25 Dec 2019 21:56:32 +0530 Subject: glusterd: deafult options after volume reset Problem: default option itransport.address-family is disappered in volume info output after a volume reset. Cause: with 3.8.0 onwards volume option transport.address-family has default value, any volume which is created will have this option set. So, volume info will show this in its output. But, with reset volume, this option is not handled. Solution: In glusterd_enable_default_options(), we should add this option along with other default options. This function is called by glusterd_options_reset() with volume reset command. fixes: bz#1786478 Change-Id: I58f7aa24cf01f308c4efe6cae748cc3bc8b99b1d Signed-off-by: Sanju Rakonde --- tests/bugs/glusterd/optimized-basic-testcases.t | 5 +++++ xlators/mgmt/glusterd/src/glusterd-utils.c | 23 +++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/tests/bugs/glusterd/optimized-basic-testcases.t b/tests/bugs/glusterd/optimized-basic-testcases.t index 6fdb463e5d7..b89ca22415e 100644 --- a/tests/bugs/glusterd/optimized-basic-testcases.t +++ b/tests/bugs/glusterd/optimized-basic-testcases.t @@ -69,6 +69,11 @@ TEST pidof glusterd; TEST $CLI volume create $V0 $H0:$B0/${V0}{1,2}; EXPECT 'Created' volinfo_field $V0 'Status'; +#bug-1786478 - default volume option after volume reset +addr_family=`volinfo_field $V0 'transport.address-family'` +TEST $CLI volume reset $V0 +EXPECT $addr_family volinfo_field $V0 'transport.address-family' + #bug-955588 - uuid validation uuid=`grep UUID $GLUSTERD_WORKDIR/glusterd.info | cut -f2 -d=` diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 4809e5f1658..fd3b3e9d382 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -12669,6 +12669,11 @@ glusterd_enable_default_options(glusterd_volinfo_t *volinfo, char *option) int ret = 0; xlator_t *this = NULL; glusterd_conf_t *conf = NULL; +#ifdef IPV6_DEFAULT + char *addr_family = "inet6"; +#else + char *addr_family = "inet"; +#endif this = THIS; GF_ASSERT(this); @@ -12730,6 +12735,24 @@ glusterd_enable_default_options(glusterd_volinfo_t *volinfo, char *option) } } } + + if (conf->op_version >= GD_OP_VERSION_3_9_0) { + if (!option || !strcmp("transport.address-family", option)) { + if (volinfo->transport_type == GF_TRANSPORT_TCP) { + ret = dict_set_dynstr_with_alloc( + volinfo->dict, "transport.address-family", addr_family); + if (ret) { + gf_msg(this->name, GF_LOG_ERROR, errno, + GD_MSG_DICT_SET_FAILED, + "failed to set transport." + "address-family on %s", + volinfo->volname); + goto out; + } + } + } + } + if (conf->op_version >= GD_OP_VERSION_7_0) { ret = dict_set_dynstr_with_alloc(volinfo->dict, "storage.fips-mode-rchecksum", "on"); -- cgit