diff options
author | Jiffin Tony Thottan <jthottan@redhat.com> | 2016-04-18 21:34:32 +0530 |
---|---|---|
committer | Atin Mukherjee <amukherj@redhat.com> | 2016-05-06 05:59:44 -0700 |
commit | 058a5a7bf5fa099fe2d6de86ac35fa5594b1ebd8 (patch) | |
tree | ef846c8eb6a52de0c5c8542f374d6c6b182c6d20 /xlators/mgmt/glusterd/src/glusterd-utils.c | |
parent | fd8921b9eb03af69815bb2d7cff07b63048c2d5a (diff) |
glusterd-ganesha : copy ganesha export configuration files during reboot
glusterd creates export conf file for ganesha using hook script during
volume start and ganesha_manage_export() for volume set command. But this
routine is not added in glusterd restart scenario.
Consider the following case, in a three node cluster a volume got exported
via ganesha while one of the node is offline(glusterd is not running).
When the node comes back online, that volume is not exported on that node
due to the above mentioned issue.
Also I have removed unused variables from glusterd_handle_ganesha_op()
For this patch to work pcs cluster should running on that be node.
Upstream reference
>Change-Id: I5b2312c2f3cef962b1f795b9f16c8f0a27f08ee5
>BUG: 1330097
>Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com>i
>Reviewed-on: http://review.gluster.org/14063
>Smoke: Gluster Build System <jenkins@build.gluster.com>
>NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
>CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
>Reviewed-by: soumya k <skoduri@redhat.com>
>Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
Change-Id: I5b2312c2f3cef962b1f795b9f16c8f0a27f08ee5
BUG: 1333661
Signed-off-by: Jiffin Tony Thottan <jthottan@redhat.com>
Reviewed-on: http://review.gluster.org/14233
Smoke: Gluster Build System <jenkins@build.gluster.com>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
CentOS-regression: Gluster Build System <jenkins@build.gluster.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-utils.c')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 99b01e32915..a55265f763f 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -3997,6 +3997,9 @@ glusterd_import_friend_volume (dict_t *peer_data, size_t count) glusterd_volinfo_t *old_volinfo = NULL; glusterd_volinfo_t *new_volinfo = NULL; glusterd_svc_t *svc = NULL; + gf_boolean_t newexportvalue; + gf_boolean_t oldexportvalue; + char *value = NULL; GF_ASSERT (peer_data); @@ -4017,7 +4020,9 @@ glusterd_import_friend_volume (dict_t *peer_data, size_t count) ret = glusterd_volinfo_find (new_volinfo->volname, &old_volinfo); if (0 == ret) { - (void) gd_check_and_update_rebalance_info (old_volinfo, + oldexportvalue = glusterd_check_ganesha_export (old_volinfo); + + (void) gd_check_and_update_rebalance_info (old_volinfo, new_volinfo); /* Copy brick ports from the old volinfo always. The old_volinfo @@ -4038,6 +4043,31 @@ glusterd_import_friend_volume (dict_t *peer_data, size_t count) } } + ret = glusterd_volinfo_get (new_volinfo, "ganesha.enable", &value); + if (ret) + goto out; + ret = gf_string2boolean (value, &newexportvalue); + if (ret) + goto out; + + /* * + * if new and old export value is off, then there is no point in calling + * ganesha_manage_export + */ + if (!((newexportvalue == oldexportvalue) && + newexportvalue == _gf_false)) { + ret = ganesha_manage_export (new_volinfo->volname, value, + NULL, _gf_true); + if (ret) { + gf_msg (this->name, GF_LOG_ERROR, 0, + GD_MSG_NFS_GNS_OP_HANDLE_FAIL, + "Returning from ganesha_manage_export with" + " ret: %d for volume %s ganesha.enable %s", + ret, new_volinfo->volname, + value); + goto out; + } + } ret = glusterd_store_volinfo (new_volinfo, GLUSTERD_VOLINFO_VER_AC_NONE); if (ret) { gf_msg (this->name, GF_LOG_ERROR, 0, |