d1681e
From 538b92ebe180186d84e3f5288f168c404e8957d4 Mon Sep 17 00:00:00 2001
d1681e
From: Jiffin Tony Thottan <jthottan@redhat.com>
d1681e
Date: Mon, 13 Nov 2017 18:41:58 +0530
d1681e
Subject: [PATCH 46/74] Revert "build: conditionally build legacy gNFS server
d1681e
 and associated sub-packaging"
d1681e
d1681e
This reverts commit 83abcba6b42f94eb5a6495a634d4055362a9d79d.
d1681e
d1681e
Conflicts:
d1681e
	glusterfs.spec.in
d1681e
	xlators/Makefile.am
d1681e
	xlators/mgmt/glusterd/src/glusterd-messages.h
d1681e
---
d1681e
 configure.ac                                  | 12 -----
d1681e
 extras/LinuxRPM/Makefile.am                   |  4 +-
d1681e
 glusterfs.spec.in                             | 65 +++++++--------------------
d1681e
 xlators/Makefile.am                           |  6 +--
d1681e
 xlators/mgmt/glusterd/src/Makefile.am         |  4 +-
d1681e
 xlators/mgmt/glusterd/src/glusterd-nfs-svc.c  | 28 ++++++------
d1681e
 xlators/mgmt/glusterd/src/glusterd-svc-mgmt.h |  1 +
d1681e
 xlators/mgmt/glusterd/src/glusterd-utils.c    |  7 ++-
d1681e
 xlators/mgmt/glusterd/src/glusterd.c          | 35 ++++++++++++---
d1681e
 9 files changed, 68 insertions(+), 94 deletions(-)
d1681e
d1681e
diff --git a/configure.ac b/configure.ac
d1681e
index 3841959..dfccd40 100644
d1681e
--- a/configure.ac
d1681e
+++ b/configure.ac
d1681e
@@ -1345,17 +1345,6 @@ if test "x$enable_glupy" = "xyes"; then
d1681e
 fi
d1681e
 dnl end glupy section
d1681e
 
d1681e
-dnl gnfs section
d1681e
-BUILD_GNFS="no"
d1681e
-AC_ARG_ENABLE([gnfs],
d1681e
-              AC_HELP_STRING([--enable-gnfs],
d1681e
-                             [Enable legacy gnfs server xlator.]))
d1681e
-if test "x$enable_gnfs" = "xyes"; then
d1681e
-    BUILD_GNFS="yes"
d1681e
-fi
d1681e
-AM_CONDITIONAL([BUILD_GNFS], [test x$BUILD_GNFS = xyes])
d1681e
-dnl end gnfs section
d1681e
-
d1681e
 dnl Check for userspace-rcu
d1681e
 PKG_CHECK_MODULES([URCU], [liburcu-bp], [],
d1681e
   [AC_CHECK_HEADERS([urcu-bp.h],
d1681e
@@ -1590,5 +1579,4 @@ echo "Events               : $BUILD_EVENTS"
d1681e
 echo "EC dynamic support   : $EC_DYNAMIC_SUPPORT"
d1681e
 echo "Use memory pools     : $USE_MEMPOOL"
d1681e
 echo "Nanosecond m/atimes  : $BUILD_NANOSECOND_TIMESTAMPS"
d1681e
-echo "Legacy gNFS server   : $BUILD_GNFS"
d1681e
 echo
d1681e
diff --git a/extras/LinuxRPM/Makefile.am b/extras/LinuxRPM/Makefile.am
d1681e
index f028537..61fd6da 100644
d1681e
--- a/extras/LinuxRPM/Makefile.am
d1681e
+++ b/extras/LinuxRPM/Makefile.am
d1681e
@@ -18,7 +18,7 @@ autogen:
d1681e
 	cd ../.. && \
d1681e
 	rm -rf autom4te.cache && \
d1681e
 	./autogen.sh && \
d1681e
-	./configure --enable-gnfs --with-previous-options
d1681e
+	./configure --with-previous-options
d1681e
 
d1681e
 prep:
d1681e
 	$(MAKE) -C ../.. dist;
d1681e
@@ -36,7 +36,7 @@ srcrpm:
d1681e
 	mv rpmbuild/SRPMS/* .
d1681e
 
d1681e
 rpms:
d1681e
-	rpmbuild --define '_topdir $(shell pwd)/rpmbuild' --with gnfs -bb rpmbuild/SPECS/glusterfs.spec
d1681e
+	rpmbuild --define '_topdir $(shell pwd)/rpmbuild' -bb rpmbuild/SPECS/glusterfs.spec
d1681e
 	mv rpmbuild/RPMS/*/* .
d1681e
 
d1681e
 # EPEL-5 does not like new versions of rpmbuild and requires some
d1681e
diff --git a/glusterfs.spec.in b/glusterfs.spec.in
d1681e
index 8c16477..10339fe 100644
d1681e
--- a/glusterfs.spec.in
d1681e
+++ b/glusterfs.spec.in
d1681e
@@ -47,10 +47,6 @@
d1681e
 %global _without_georeplication --disable-georeplication
d1681e
 %endif
d1681e
 
d1681e
-# if you wish to compile an rpm with the legacy gNFS server xlator
d1681e
-# rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --with gnfs
d1681e
-%{?_with_gnfs:%global _with_gnfs --enable-gnfs}
d1681e
-
d1681e
 # if you wish to compile an rpm without the OCF resource agents...
d1681e
 # rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --without ocf
d1681e
 %{?_without_ocf:%global _without_ocf --without-ocf}
d1681e
@@ -122,7 +118,7 @@
d1681e
 %endif
d1681e
 
d1681e
 # From https://fedoraproject.org/wiki/Packaging:Python#Macros
d1681e
-%if ( 0%{?rhel} && 0%{?rhel} <= 6 )
d1681e
+%if ( 0%{?rhel} && 0%{?rhel} <= 5 )
d1681e
 %{!?python2_sitelib: %global python2_sitelib %(python2 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
d1681e
 %{!?python2_sitearch: %global python2_sitearch %(python2 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
d1681e
 %global _rundir %{_localstatedir}/run
d1681e
@@ -461,26 +457,6 @@ This package provides support to geo-replication.
d1681e
 %endif
d1681e
 %endif
d1681e
 
d1681e
-%if ( 0%{?_with_gnfs:1} )
d1681e
-%package gnfs
d1681e
-Summary:          GlusterFS gNFS server
d1681e
-Group:            System Environment/Daemons
d1681e
-Requires:         %{name}%{?_isa} = %{version}-%{release}
d1681e
-Requires:         %{name}-client-xlators%{?_isa} = %{version}-%{release}
d1681e
-Requires:         nfs-utils
d1681e
-
d1681e
-%description gnfs
d1681e
-GlusterFS is a distributed file-system capable of scaling to several
d1681e
-petabytes. It aggregates various storage bricks over Infiniband RDMA
d1681e
-or TCP/IP interconnect into one large parallel network file
d1681e
-system. GlusterFS is one of the most sophisticated file systems in
d1681e
-terms of features and extensibility.  It borrows a powerful concept
d1681e
-called Translators from GNU Hurd kernel. Much of the code in GlusterFS
d1681e
-is in user space and easily manageable.
d1681e
-
d1681e
-This package provides the glusterfs legacy gNFS server xlator
d1681e
-%endif
d1681e
-
d1681e
 %package libs
d1681e
 Summary:          GlusterFS common libraries
d1681e
 Group:            Applications/File
d1681e
@@ -621,6 +597,7 @@ Requires:         %{name}-api%{?_isa} = %{version}-%{release}
d1681e
 Requires:         %{name}-client-xlators%{?_isa} = %{version}-%{release}
d1681e
 # lvm2 for snapshot, and nfs-utils and rpcbind/portmap for gnfs server
d1681e
 Requires:         lvm2
d1681e
+Requires:         nfs-utils
d1681e
 %if ( 0%{?_with_systemd:1} )
d1681e
 %{?systemd_requires}
d1681e
 %else
d1681e
@@ -736,19 +713,18 @@ export LDFLAGS
d1681e
 ./autogen.sh && %configure \
d1681e
         %{?_with_cmocka} \
d1681e
         %{?_with_debug} \
d1681e
-        %{?_with_firewalld} \
d1681e
-        %{?_with_gnfs} \
d1681e
-        %{?_with_tmpfilesdir} \
d1681e
         %{?_with_valgrind} \
d1681e
+        %{?_with_tmpfilesdir} \
d1681e
         %{?_without_bd} \
d1681e
         %{?_without_epoll} \
d1681e
-        %{?_without_events} \
d1681e
         %{?_without_fusermount} \
d1681e
         %{?_without_georeplication} \
d1681e
+        %{?_with_firewalld} \
d1681e
         %{?_without_ocf} \
d1681e
         %{?_without_rdma} \
d1681e
         %{?_without_syslog} \
d1681e
-        %{?_without_tiering}
d1681e
+        %{?_without_tiering} \
d1681e
+        %{?_without_events}
d1681e
 
d1681e
 # fix hardening and remove rpath in shlibs
d1681e
 %if ( 0%{?fedora} && 0%{?fedora} > 17 ) || ( 0%{?rhel} && 0%{?rhel} > 6 )
d1681e
@@ -1105,6 +1081,7 @@ exit 0
d1681e
 %exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/trash.so
d1681e
 %exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/upcall.so
d1681e
 %exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mgmt*
d1681e
+%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs*
d1681e
 %exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/decompounder.so
d1681e
 %exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/server*
d1681e
 %exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/storage*
d1681e
@@ -1297,19 +1274,6 @@ exit 0
d1681e
 %endif
d1681e
 
d1681e
 %if ( 0%{?_build_server} )
d1681e
-%if ( 0%{?_with_gnfs:1} )
d1681e
-%files gnfs
d1681e
-%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator
d1681e
-%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs
d1681e
-     %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs/server.so
d1681e
-%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/nfs
d1681e
-%ghost      %attr(0600,-,-) %{_sharedstatedir}/glusterd/nfs/nfs-server.vol
d1681e
-%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/nfs/run
d1681e
-%ghost      %attr(0600,-,-) %{_sharedstatedir}/glusterd/nfs/run/nfs.pid
d1681e
-%endif
d1681e
-%endif
d1681e
-
d1681e
-%if ( 0%{?_build_server} )
d1681e
 %files ganesha
d1681e
 %endif
d1681e
 
d1681e
@@ -1399,11 +1363,6 @@ exit 0
d1681e
 # sysconf
d1681e
 %config(noreplace) %{_sysconfdir}/glusterfs
d1681e
 %exclude %{_sysconfdir}/glusterfs/eventsconfig.json
d1681e
-%exclude %{_sharedstatedir}/glusterd/nfs/nfs-server.vol
d1681e
-%exclude %{_sharedstatedir}/glusterd/nfs/run/nfs.pid
d1681e
-%if ( 0%{?_with_gnfs:1} )
d1681e
-%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs/*
d1681e
-%endif
d1681e
 %config(noreplace) %{_sysconfdir}/sysconfig/glusterd
d1681e
 %if ( 0%{_for_fedora_koji_builds} )
d1681e
 %config(noreplace) %{_sysconfdir}/sysconfig/glusterfsd
d1681e
@@ -1450,6 +1409,7 @@ exit 0
d1681e
      %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/trash.so
d1681e
      %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/upcall.so
d1681e
      %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/leases.so
d1681e
+     %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs*
d1681e
 %dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mgmt
d1681e
      %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mgmt/glusterd.so
d1681e
 %dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol
d1681e
@@ -1517,7 +1477,11 @@ exit 0
d1681e
        %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop/pre
d1681e
             %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop/pre/S30samba-stop.sh
d1681e
             %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop/pre/S29CTDB-teardown.sh
d1681e
-%config(noreplace) %ghost      %attr(0600,-,-) %{_sharedstatedir}/glusterd/options
d1681e
+%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/nfs
d1681e
+%ghost      %attr(0600,-,-) %{_sharedstatedir}/glusterd/nfs/nfs-server.vol
d1681e
+%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/nfs/run
d1681e
+%ghost      %attr(0600,-,-) %{_sharedstatedir}/glusterd/nfs/run/nfs.pid
d1681e
+%ghost      %attr(0600,-,-) %{_sharedstatedir}/glusterd/options
d1681e
 %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/peers
d1681e
 %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/quotad
d1681e
 %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/scrub
d1681e
@@ -2156,6 +2120,9 @@ fi
d1681e
 %endif
d1681e
 
d1681e
 %changelog
d1681e
+* Mon Nov 13 2017 Jiffin Tony Thottan <jthottan@redhat.com>
d1681e
+- DOWNSTREAM ONLY - revert of 83abcb(gnfs in an optional subpackage)
d1681e
+
d1681e
 * Tue Oct 10 2017 Milind Changire <mchangir@redhat.com>
d1681e
 - DOWNSTREAM ONLY patch - launch glusterd in upgrade mode after all new bits have been installed
d1681e
 
d1681e
diff --git a/xlators/Makefile.am b/xlators/Makefile.am
d1681e
index 29549db..c3c9cf2 100644
d1681e
--- a/xlators/Makefile.am
d1681e
+++ b/xlators/Makefile.am
d1681e
@@ -1,12 +1,8 @@
d1681e
-if BUILD_GNFS
d1681e
-  GNFS_DIR = nfs
d1681e
-endif
d1681e
-
d1681e
 DIST_SUBDIRS = cluster storage protocol performance debug features encryption \
d1681e
           mount nfs mgmt system playground meta
d1681e
 
d1681e
 SUBDIRS = cluster storage protocol performance debug features encryption \
d1681e
-          mount ${GNFS_DIR} mgmt system playground meta
d1681e
+          mount nfs mgmt system playground meta
d1681e
 
d1681e
 EXTRA_DIST = xlator.sym
d1681e
 
d1681e
diff --git a/xlators/mgmt/glusterd/src/Makefile.am b/xlators/mgmt/glusterd/src/Makefile.am
d1681e
index b0f5a9b..4858dee 100644
d1681e
--- a/xlators/mgmt/glusterd/src/Makefile.am
d1681e
+++ b/xlators/mgmt/glusterd/src/Makefile.am
d1681e
@@ -1,8 +1,6 @@
d1681e
 xlator_LTLIBRARIES = glusterd.la
d1681e
 xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/mgmt
d1681e
-glusterd_la_CPPFLAGS = $(AM_CPPFLAGS) \
d1681e
-	-DFILTERDIR=\"$(libdir)/glusterfs/$(PACKAGE_VERSION)/filter\" \
d1681e
-	-DXLATORDIR=\"$(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator\"
d1681e
+glusterd_la_CPPFLAGS = $(AM_CPPFLAGS) "-DFILTERDIR=\"$(libdir)/glusterfs/$(PACKAGE_VERSION)/filter\""
d1681e
 glusterd_la_LDFLAGS = -module $(GF_XLATOR_DEFAULT_LDFLAGS)
d1681e
 glusterd_la_SOURCES = glusterd.c glusterd-handler.c glusterd-sm.c \
d1681e
 	glusterd-op-sm.c glusterd-utils.c glusterd-rpc-ops.c \
d1681e
diff --git a/xlators/mgmt/glusterd/src/glusterd-nfs-svc.c b/xlators/mgmt/glusterd/src/glusterd-nfs-svc.c
d1681e
index 32b1064..eab9746 100644
d1681e
--- a/xlators/mgmt/glusterd/src/glusterd-nfs-svc.c
d1681e
+++ b/xlators/mgmt/glusterd/src/glusterd-nfs-svc.c
d1681e
@@ -10,7 +10,6 @@
d1681e
 
d1681e
 #include "globals.h"
d1681e
 #include "run.h"
d1681e
-#include "syscall.h"
d1681e
 #include "glusterd.h"
d1681e
 #include "glusterd-utils.h"
d1681e
 #include "glusterd-volgen.h"
d1681e
@@ -18,6 +17,8 @@
d1681e
 #include "glusterd-messages.h"
d1681e
 #include "glusterd-svc-helper.h"
d1681e
 
d1681e
+static char *nfs_svc_name = "nfs";
d1681e
+
d1681e
 static gf_boolean_t
d1681e
 glusterd_nfssvc_need_start ()
d1681e
 {
d1681e
@@ -40,13 +41,19 @@ glusterd_nfssvc_need_start ()
d1681e
         return start;
d1681e
 }
d1681e
 
d1681e
+int
d1681e
+glusterd_nfssvc_init (glusterd_svc_t *svc)
d1681e
+{
d1681e
+        return glusterd_svc_init (svc, nfs_svc_name);
d1681e
+}
d1681e
+
d1681e
 static int
d1681e
 glusterd_nfssvc_create_volfile ()
d1681e
 {
d1681e
         char            filepath[PATH_MAX] = {0,};
d1681e
         glusterd_conf_t *conf = THIS->private;
d1681e
 
d1681e
-        glusterd_svc_build_volfile_path (conf->nfs_svc.name, conf->workdir,
d1681e
+        glusterd_svc_build_volfile_path (nfs_svc_name, conf->workdir,
d1681e
                                          filepath, sizeof (filepath));
d1681e
         return glusterd_create_global_volfile (build_nfs_graph,
d1681e
                                                filepath, NULL);
d1681e
@@ -58,16 +65,15 @@ glusterd_nfssvc_manager (glusterd_svc_t *svc, void *data, int flags)
d1681e
         int                 ret     = -1;
d1681e
 
d1681e
         if (!svc->inited) {
d1681e
-                ret = glusterd_svc_init (svc, "nfs");
d1681e
+                ret = glusterd_nfssvc_init (svc);
d1681e
                 if (ret) {
d1681e
                         gf_msg (THIS->name, GF_LOG_ERROR, 0,
d1681e
-                                GD_MSG_FAILED_INIT_NFSSVC,
d1681e
-                                "Failed to init nfs service");
d1681e
+                                GD_MSG_FAILED_INIT_NFSSVC, "Failed to init nfs "
d1681e
+                                "service");
d1681e
                         goto out;
d1681e
                 } else {
d1681e
                         svc->inited = _gf_true;
d1681e
-                        gf_msg_debug (THIS->name, 0,
d1681e
-                                      "nfs service initialized");
d1681e
+                        gf_msg_debug (THIS->name, 0, "nfs service initialized");
d1681e
                 }
d1681e
         }
d1681e
 
d1681e
@@ -75,14 +81,6 @@ glusterd_nfssvc_manager (glusterd_svc_t *svc, void *data, int flags)
d1681e
         if (ret)
d1681e
                 goto out;
d1681e
 
d1681e
-        /* not an error, or a (very) soft error at best */
d1681e
-        if (sys_access (XLATORDIR "/nfs/server.so", R_OK) != 0) {
d1681e
-                gf_msg (THIS->name, GF_LOG_INFO, 0,
d1681e
-                        GD_MSG_GNFS_XLATOR_NOT_INSTALLED,
d1681e
-                        "nfs/server.so xlator is not installed");
d1681e
-                goto out;
d1681e
-        }
d1681e
-
d1681e
         ret = glusterd_nfssvc_create_volfile ();
d1681e
         if (ret)
d1681e
                 goto out;
d1681e
diff --git a/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.h b/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.h
d1681e
index 8b70a62..c505d1e 100644
d1681e
--- a/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.h
d1681e
+++ b/xlators/mgmt/glusterd/src/glusterd-svc-mgmt.h
d1681e
@@ -29,6 +29,7 @@ struct glusterd_svc_ {
d1681e
         char                      name[PATH_MAX];
d1681e
         glusterd_conn_t           conn;
d1681e
         glusterd_proc_t           proc;
d1681e
+        glusterd_svc_build_t      build;
d1681e
         glusterd_svc_manager_t    manager;
d1681e
         glusterd_svc_start_t      start;
d1681e
         glusterd_svc_stop_t       stop;
d1681e
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
d1681e
index 55c4fa7..f611fbb 100644
d1681e
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
d1681e
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
d1681e
@@ -668,8 +668,11 @@ glusterd_volinfo_new (glusterd_volinfo_t **volinfo)
d1681e
 
d1681e
         new_volinfo->xl = THIS;
d1681e
 
d1681e
-        glusterd_snapdsvc_build (&new_volinfo->snapd.svc);
d1681e
-        glusterd_tierdsvc_build (&new_volinfo->tierd.svc);
d1681e
+        new_volinfo->snapd.svc.build = glusterd_snapdsvc_build;
d1681e
+        new_volinfo->snapd.svc.build (&(new_volinfo->snapd.svc));
d1681e
+
d1681e
+        new_volinfo->tierd.svc.build = glusterd_tierdsvc_build;
d1681e
+        new_volinfo->tierd.svc.build (&(new_volinfo->tierd.svc));
d1681e
 
d1681e
         pthread_mutex_init (&new_volinfo->reflock, NULL);
d1681e
         *volinfo = glusterd_volinfo_ref (new_volinfo);
d1681e
diff --git a/xlators/mgmt/glusterd/src/glusterd.c b/xlators/mgmt/glusterd/src/glusterd.c
d1681e
index 68d3e90..6ce4156 100644
d1681e
--- a/xlators/mgmt/glusterd/src/glusterd.c
d1681e
+++ b/xlators/mgmt/glusterd/src/glusterd.c
d1681e
@@ -1330,6 +1330,34 @@ out:
d1681e
         return ret;
d1681e
 }
d1681e
 
d1681e
+static void
d1681e
+glusterd_svcs_build ()
d1681e
+{
d1681e
+        xlator_t           *this    = NULL;
d1681e
+        glusterd_conf_t    *priv    = NULL;
d1681e
+
d1681e
+        this = THIS;
d1681e
+        GF_ASSERT (this);
d1681e
+
d1681e
+        priv = this->private;
d1681e
+        GF_ASSERT (priv);
d1681e
+
d1681e
+        priv->shd_svc.build = glusterd_shdsvc_build;
d1681e
+        priv->shd_svc.build (&(priv->shd_svc));
d1681e
+
d1681e
+        priv->nfs_svc.build = glusterd_nfssvc_build;
d1681e
+        priv->nfs_svc.build (&(priv->nfs_svc));
d1681e
+
d1681e
+        priv->quotad_svc.build = glusterd_quotadsvc_build;
d1681e
+        priv->quotad_svc.build (&(priv->quotad_svc));
d1681e
+
d1681e
+        priv->bitd_svc.build = glusterd_bitdsvc_build;
d1681e
+        priv->bitd_svc.build (&(priv->bitd_svc));
d1681e
+
d1681e
+        priv->scrub_svc.build = glusterd_scrubsvc_build;
d1681e
+        priv->scrub_svc.build (&(priv->scrub_svc));
d1681e
+}
d1681e
+
d1681e
 static int
d1681e
 is_upgrade (dict_t *options, gf_boolean_t *upgrade)
d1681e
 {
d1681e
@@ -1864,12 +1892,7 @@ init (xlator_t *this)
d1681e
         this->private = conf;
d1681e
         glusterd_mgmt_v3_lock_init ();
d1681e
         glusterd_txn_opinfo_dict_init ();
d1681e
-
d1681e
-        glusterd_shdsvc_build (&conf->shd_svc);
d1681e
-        glusterd_nfssvc_build (&conf->nfs_svc);
d1681e
-        glusterd_quotadsvc_build (&conf->quotad_svc);
d1681e
-        glusterd_bitdsvc_build (&conf->bitd_svc);
d1681e
-        glusterd_scrubsvc_build (&conf->scrub_svc);
d1681e
+        glusterd_svcs_build ();
d1681e
 
d1681e
         /* Make install copies few of the hook-scripts by creating hooks
d1681e
          * directory. Hence purposefully not doing the check for the presence of
d1681e
-- 
d1681e
1.8.3.1
d1681e