diff --git a/.gitignore b/.gitignore
index 3d202b7..fd8dfcb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/glusterfs-3.4.0.59rhs.tar.gz
+SOURCES/glusterfs-3.6.0.29.tar.gz
diff --git a/.glusterfs.metadata b/.glusterfs.metadata
index 293eb01..0ecc87e 100644
--- a/.glusterfs.metadata
+++ b/.glusterfs.metadata
@@ -1 +1 @@
-724b12ead8c78e34a22c926c2c8d127ba0e1f725 SOURCES/glusterfs-3.4.0.59rhs.tar.gz
+266514d8196bf31576e8e165f9cf10fb9cda77bf SOURCES/glusterfs-3.6.0.29.tar.gz
diff --git a/SPECS/glusterfs.spec b/SPECS/glusterfs.spec
index 89566b0..0721976 100644
--- a/SPECS/glusterfs.spec
+++ b/SPECS/glusterfs.spec
@@ -1,33 +1,16 @@
-# if you make changes, the it is advised to increment this number, and provide
-# a descriptive suffix to identify who owns or what the change represents
-# e.g. release_version 2.MSW
-%global release 1%{?dist}
-%global _sharedstatedir /var/lib
-
-%global version 3.4.0.59rhs
-
-
-# if you wish to build the server rpms, compile like this...
-# rpmbuild -ta glusterfs-VERSION.tar.gz --with server
-%if "%{?_with_server}"
-%define _build_server 1
-%else
-%if "%{dist}" == ".el6rhs"
-%define _build_server 1
-%else
-%define _build_server 0
-%endif
-%endif
-
 %global _hardened_build 1
 
 %global _for_fedora_koji_builds 0
 
 # uncomment and add '%' to use the prereltag for pre-releases
-# global prereltag beta2
+# %%global prereltag qa3
+
+##-----------------------------------------------------------------------------
+## All argument definitions should be placed here and keep them sorted
+##
 
 # if you wish to compile an rpm without rdma support, compile like this...
-# rpmbuild -ta glusterfs-VERSION.tar.gz --without rdma
+# rpmbuild -ta glusterfs-3.6.0.29.tar.gz --without rdma
 %{?_without_rdma:%global _without_rdma --disable-ibverbs}
 
 # No RDMA Support on s390(x)
@@ -36,152 +19,215 @@
 %endif
 
 # if you wish to compile an rpm without epoll...
-# rpmbuild -ta glusterfs-VERSION.tar.gz --without epoll
+# rpmbuild -ta glusterfs-3.6.0.29.tar.gz --without epoll
 %{?_without_epoll:%global _without_epoll --disable-epoll}
 
 # if you wish to compile an rpm without fusermount...
-# rpmbuild -ta glusterfs-VERSION.tar.gz --without fusermount
+# rpmbuild -ta glusterfs-3.6.0.29.tar.gz --without fusermount
 %{?_without_fusermount:%global _without_fusermount --disable-fusermount}
 
-%global _can_georeplicate 1
-
 # if you wish to compile an rpm without geo-replication support, compile like this...
-# rpmbuild -ta glusterfs-VERSION.tar.gz --without georeplication
-%{?_without_georeplication:%global _without_georeplication --disable-geo-replication}
+# rpmbuild -ta glusterfs-3.6.0.29.tar.gz --without georeplication
+%{?_without_georeplication:%global _without_georeplication --disable-georeplication}
+
+# Disable geo-replication on EL5, as its default Python is too old
+%if ( 0%{?rhel} && 0%{?rhel} < 6 )
+%global _without_georeplication --disable-georeplication
+%endif
 
 # if you wish to compile an rpm without the OCF resource agents...
-# rpmbuild -ta glusterfs-VERSION.tar.gz --without ocf
+# rpmbuild -ta glusterfs-3.6.0.29.tar.gz --without ocf
 %{?_without_ocf:%global _without_ocf --without-ocf}
 
-# disable ocf as it is not required for rhs
-%global _without_ocf --without-ocf
+# if you wish to build rpms without syslog logging, compile like this
+# rpmbuild -ta glusterfs-3.6.0.29.tar.gz --without syslog
+%{?_without_syslog:%global _without_syslog --disable-syslog}
+
+# disable syslog forcefully as rhel <= 6 doesn't have rsyslog or rsyslog-mmcount
+%if ( 0%{?rhel} && 0%{?rhel} <= 6 )
+%global _without_syslog --disable-syslog
+%endif
 
 # if you wish to compile an rpm without the BD map support...
-# rpmbuild -ta glusterfs-VERSION.tar.gz --without bd
+# rpmbuild -ta glusterfs-3.6.0.29.tar.gz --without bd
 %{?_without_bd:%global _without_bd --disable-bd-xlator}
 
+%if ( 0%{?rhel} && 0%{?rhel} < 6 || 0%{?sles_version} )
+%define _without_bd --disable-bd-xlator
+%endif
+
+# if you wish to compile an rpm without the qemu-block support...
+# rpmbuild -ta glusterfs-3.6.0.29.tar.gz --without qemu-block
+%{?_without_qemu_block:%global _without_qemu_block --disable-qemu-block}
+
 %if ( 0%{?rhel} && 0%{?rhel} < 6 )
-%define _without_bd true
+# xlators/features/qemu-block fails to build on RHEL5, disable it
+%define _without_qemu_block --disable-qemu-block
 %endif
 
-# if you wish to build rpms without syslog logging, compile like this
-# rpmbuild -ta glusterfs-VERSION.tar.gz --without syslog
-%{?_without_syslog:%global _without_syslog --disable-syslog}
+# if you wish not to build server rpms, compile like this.
+# rpmbuild -ta glusterfs-3.6.0.29.tar.gz --without server
 
-# disable syslog if dist is not for RHS and rhel <= 6.  These
-# platoforms don't have either rsyslog-mmjsonparse or rsyslog-mmcount
-%if ( 0%{?rhel} && 0%{?rhel} <= 6 && "%{dist}" != ".el6rhs" )
-%global _without_syslog --disable-syslog
+%global _build_server 1
+%if "%{?_without_server}"
+%global _build_server 0
 %endif
 
-# disable syslog forcefully as rhel < 6 doesn't have rsyslog
-%if ( 0%{?rhel} && 0%{?rhel} < 6 )
-%global _without_syslog --disable-syslog
+%if ( "%{?dist}" == ".el6rhs" ) || ( "%{?dist}" == ".el7rhs" )
+%global _build_server 1
+%else
+%global _build_server 0
 %endif
 
+%global _without_extra_xlators 1
+%global _without_regression_tests 1
+
+##-----------------------------------------------------------------------------
+## All %global definitions should be placed here and keep them sorted
+##
+
 %if ( 0%{?fedora} && 0%{?fedora} > 16 ) || ( 0%{?rhel} && 0%{?rhel} > 6 )
-%global           _with_systemd true
+%global _with_systemd true
 %endif
 
+# there is no systemtap support! Perhaps some day there will be
+%global _without_systemtap --enable-systemtap=no
+
 # From https://fedoraproject.org/wiki/Packaging:Python#Macros
 %if ( 0%{?rhel} && 0%{?rhel} <= 5 )
-%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
-%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
+%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
+%{!?python_sitearch: %global python_sitearch %(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
+%endif
+
+%if ( 0%{?_with_systemd:1} )
+%define _init_enable()  /bin/systemctl enable %1.service ;
+%define _init_disable() /bin/systemctl disable %1.service ;
+%define _init_restart() /bin/systemctl try-restart %1.service ;
+%define _init_stop()    /bin/systemctl stop %1.service ;
+%define _init_install() install -D -p -m 0644 %1 %{buildroot}%{_unitdir}/%2.service ;
+# can't seem to make a generic macro that works
+%define _init_glusterd   %{_unitdir}/glusterd.service
+%define _init_glusterfsd %{_unitdir}/glusterfsd.service
+%else
+%define _init_enable()  /sbin/chkconfig --add %1 ;
+%define _init_disable() /sbin/chkconfig --del %1 ;
+%define _init_restart() /sbin/service %1 condrestart &>/dev/null ;
+%define _init_stop()    /sbin/service %1 stop &>/dev/null ;
+%define _init_install() install -D -p -m 0755 %1 %{buildroot}%{_sysconfdir}/init.d/%2 ;
+# can't seem to make a generic macro that works
+%define _init_glusterd   %{_sysconfdir}/init.d/glusterd
+%define _init_glusterfsd %{_sysconfdir}/init.d/glusterfsd
+%endif
+
+%if ( 0%{_for_fedora_koji_builds} )
+%if ( 0%{?_with_systemd:1} )
+%global glusterfsd_service glusterfsd.service
+%else
+%global glusterfsd_service glusterfsd.init
+%endif
+%endif
+
+%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}}
+
+%if ( 0%{?rhel} && 0%{?rhel} < 6 )
+   # _sharedstatedir is not provided by RHEL5
+   %define _sharedstatedir /var/lib
+%endif
+
+# We do not want to generate useless provides and requires for xlator
+# .so files to be set for glusterfs packages.
+# Filter all generated:
+#
+# TODO: RHEL5 does not have a convenient solution
+%if ( 0%{?rhel} == 6 )
+    # filter_setup exists in RHEL6 only
+    %filter_provides_in %{_libdir}/glusterfs/%{version}/
+    %global __filter_from_req %{?__filter_from_req} | grep -v -P '^(?!lib).*\.so.*$'
+    %filter_setup
+%else
+    # modern rpm and current Fedora do not generate requires when the
+    # provides are filtered
+    %global __provides_exclude_from ^%{_libdir}/glusterfs/%{version}/.*$
 %endif
 
+
+##-----------------------------------------------------------------------------
+## All package definitions should be placed here and keep them sorted
+##
 Summary:          Cluster File System
 %if ( 0%{_for_fedora_koji_builds} )
 Name:             glusterfs
-Version:          3.4.0
-Release:          0.6%{?prereltag:.%{prereltag}}%{?dist}
+Version:          3.5.0
+Release:          0.1%{?prereltag:.%{prereltag}}%{?dist}
+Vendor:           Fedora Project
 %else
 Name:             glusterfs
-Version:          %{version}
-Release:          %{release}
+Version:          3.6.0.29
+Release:          2%{?dist}
 ExclusiveArch:    x86_64 aarch64
 %endif
 License:          GPLv2 or LGPLv3+
 Group:            System Environment/Base
 URL:              http://www.gluster.org/docs/index.php/GlusterFS
-Source0:          glusterfs-%{version}.tar.gz
+%if ( 0%{_for_fedora_koji_builds} )
+Source0:          http://bits.gluster.org/pub/gluster/glusterfs/src/glusterfs-%{version}%{?prereltag}.tar.gz
+Source1:          glusterd.sysconfig
+Source2:          glusterfsd.sysconfig
+Source3:          glusterfs-fuse.logrotate
+Source4:          glusterd.logrotate
+Source5:          glusterfsd.logrotate
+Source6:          rhel5-load-fuse-modules
+Source7:          glusterfsd.service
+Source8:          glusterfsd.init
+%else
+Source0:          glusterfs-3.6.0.29.tar.gz
+%endif
 
 BuildRoot:        %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
 
-%if ( 0%{?_with_systemd:1} )
-%if ( 0%{_for_fedora_koji_builds} )
-%global glusterfsd_service %{S:%{SOURCE11}}
+%if ( 0%{?rhel} && 0%{?rhel} <= 5 )
+BuildRequires:    python-simplejson
 %endif
+%if ( 0%{?_with_systemd:1} )
 BuildRequires:    systemd-units
 Requires(post):   systemd-units
 Requires(preun):  systemd-units
 Requires(postun): systemd-units
-%define _init_enable()  /bin/systemctl enable %1.service ;
-%define _init_disable() /bin/systemctl disable %1.service ;
-%define _init_restart() /bin/systemctl try-restart %1.service ;
-%define _init_stop()    /bin/systemctl stop %1.service ;
-%define _init_install() %{__install} -D -p -m 0644 %1 %{buildroot}%{_unitdir}/%2.service ;
-# can't seem to make a generic macro that works
-%define _init_glusterd   %{_unitdir}/glusterd.service
-%define _init_glusterfsd %{_unitdir}/glusterfsd.service
 %else
-%if ( 0%{_for_fedora_koji_builds} )
-%global glusterfsd_service %{S:%{SOURCE13}}
-%endif
 Requires(post):   /sbin/chkconfig
 Requires(preun):  /sbin/service
 Requires(preun):  /sbin/chkconfig
 Requires(postun): /sbin/service
-%define _init_enable()  /sbin/chkconfig --add %1 ;
-%define _init_disable() /sbin/chkconfig --del %1 ;
-%define _init_restart() /sbin/service %1 condrestart &>/dev/null ;
-%define _init_stop()    /sbin/service %1 stop &>/dev/null ;
-%define _init_install() %{__install} -D -p -m 0755 %1 %{buildroot}%{_sysconfdir}/init.d/%2 ;
-# can't seem to make a generic macro that works
-%define _init_glusterd   %{_sysconfdir}/init.d/glusterd
-%define _init_glusterfsd %{_sysconfdir}/init.d/glusterfsd
 %endif
 
+Requires:         %{name}-libs = %{version}-%{release}
 BuildRequires:    bison flex
 BuildRequires:    gcc make automake libtool
 BuildRequires:    ncurses-devel readline-devel
 BuildRequires:    libxml2-devel openssl-devel
 BuildRequires:    libaio-devel
-BuildRequires:    systemtap-sdt-devel
 BuildRequires:    python-devel
 BuildRequires:    python-ctypes
-%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 )
+%if ( 0%{!?_without_systemtap:1} )
+BuildRequires:    systemtap-sdt-devel
+%endif
 %if ( 0%{!?_without_bd:1} )
 BuildRequires:    lvm2-devel
 %endif
+%if ( 0%{!?_without_qemu_block:1} )
+BuildRequires:    glib2-devel
 %endif
-%if ( 0%{?rhel} && 0%{?rhel} <= 5 )
-BuildRequires:    python-simplejson
+%if ( 0%{!?_without_georeplication:1} )
+BuildRequires:    libattr-devel
 %endif
-Requires: openssl
-Requires:         %{name}-libs = %{version}-%{release}
 
-Obsoletes:        hekafs <= 0.7
-Obsoletes:        %{name}-libs <= 2.0.0
+Obsoletes:        hekafs
 Obsoletes:        %{name}-common < %{version}-%{release}
 Obsoletes:        %{name}-core < %{version}-%{release}
+Obsoletes:        %{name}-ufo
 Provides:         %{name}-common = %{version}-%{release}
 Provides:         %{name}-core = %{version}-%{release}
 
-# We do not want to generate useless provides and requires for xlator .so files
-# Filter all generated:
-#
-# TODO: RHEL5 does not have a convenient solution
-%if ( 0%{?rhel} == 6 )
-    # filter_setup exists in RHEL6 only
-    %filter_provides_in %{_libdir}/glusterfs/%{version}/
-    %global __filter_from_req %{?__filter_from_req} | %{__grep} -v -P '^(?!lib).*\.so.*$'
-    %filter_setup
-%else
-    # modern rpm and current Fedora do not generate requires when the
-    # provides are filtered
-    %global __provides_exclude_from ^%{_libdir}/glusterfs/%{version}/.*$
-%endif
-
 %description
 GlusterFS is a clustered file-system capable of scaling to several
 petabytes. It aggregates various storage bricks over Infiniband RDMA
@@ -195,20 +241,14 @@ This package includes the glusterfs binary, the glusterfsd daemon and the
 gluster command line, libglusterfs and glusterfs translator modules common to
 both GlusterFS server and client framework.
 
-%package libs
-Summary:          GlusterFS common libraries
-Group:            Applications/File
-%if ( 0%{!?_without_syslog:1} )
-%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} > 6 )
-Requires:         rsyslog-mmjsonparse
-%endif
-%if ( 0%{?rhel} && 0%{?rhel} == 6 )
-# rsyslog-mmcount should be installed manually before enabling new logging framework
-#Requires:         rsyslog-mmcount
-%endif
-%endif
+%package api
+Summary:          Clustered file-system api library
+Group:            System Environment/Daemons
+Requires:         %{name} = %{version}-%{release}
+# we provide the Python package/namespace 'gluster'
+Provides:         python-gluster = %{version}-%{release}
 
-%description libs
+%description api
 GlusterFS is a clustered file-system capable of scaling to several
 petabytes. It aggregates various storage bricks over Infiniband RDMA
 or TCP/IP interconnect into one large parallel network file
@@ -217,17 +257,15 @@ terms of features and extensibility.  It borrows a powerful concept
 called Translators from GNU Hurd kernel. Much of the code in GlusterFS
 is in user space and easily manageable.
 
-This package provides the base GlusterFS libraries
+This package provides the glusterfs libgfapi library.
 
-%if ( 0%{!?_without_rdma:1} )
-%package rdma
-Summary:          GlusterFS rdma support for ib-verbs
-Group:            Applications/File
-BuildRequires:    libibverbs-devel
-BuildRequires:    librdmacm-devel
+%package api-devel
+Summary:          Development Libraries
+Group:            Development/Libraries
 Requires:         %{name} = %{version}-%{release}
+Requires:         %{name}-devel = %{version}-%{release}
 
-%description rdma
+%description api-devel
 GlusterFS is a clustered file-system capable of scaling to several
 petabytes. It aggregates various storage bricks over Infiniband RDMA
 or TCP/IP interconnect into one large parallel network file
@@ -236,41 +274,69 @@ terms of features and extensibility.  It borrows a powerful concept
 called Translators from GNU Hurd kernel. Much of the code in GlusterFS
 is in user space and easily manageable.
 
-This package provides support to ib-verbs library.
-%endif
+This package provides the api include files.
 
-%if 0%{?_build_server}
-%if 0%{?_can_georeplicate}
-%if ( 0%{!?_without_georeplication:1} )
-%package geo-replication
-Summary:          GlusterFS Geo-replication
+%package cli
+Summary:          GlusterFS CLI
 Group:            Applications/File
-Requires:         %{name} = %{version}-%{release}
-# Strict dependency for `ls extras/geo-rep/*` scripts
-Requires:         attr
-Requires:         openssh-clients
+Requires:         %{name}-libs = %{version}-%{release}
 
-%description geo-replication
+%description cli
 GlusterFS is a clustered file-system capable of scaling to several
-peta-bytes. It aggregates various storage bricks over Infiniband RDMA
+petabytes. It aggregates various storage bricks over Infiniband RDMA
 or TCP/IP interconnect into one large parallel network file
-system. GlusterFS is one of the most sophisticated file system in
+system. GlusterFS is one of the most sophisticated file systems in
 terms of features and extensibility.  It borrows a powerful concept
 called Translators from GNU Hurd kernel. Much of the code in GlusterFS
-is in userspace and easily manageable.
+is in user space and easily manageable.
 
-This package provides support to geo-replication.
-%endif
+This package provides the GlusterFS CLI application and its man page
+
+%package devel
+Summary:          Development Libraries
+Group:            Development/Libraries
+Requires:         %{name} = %{version}-%{release}
+# Needed for the Glupy examples to work
+%if ( 0%{!?_without_extra_xlators:1} )
+Requires:         %{name}-extra-xlators = %{version}-%{release}
 %endif
+
+%description devel
+GlusterFS is a clustered file-system capable of scaling to several
+petabytes. It aggregates various storage bricks over Infiniband RDMA
+or TCP/IP interconnect into one large parallel network file
+system. GlusterFS is one of the most sophisticated file systems in
+terms of features and extensibility.  It borrows a powerful concept
+called Translators from GNU Hurd kernel. Much of the code in GlusterFS
+is in user space and easily manageable.
+
+This package provides the development libraries and include files.
+
+%if ( 0%{!?_without_extra_xlators:1} )
+%package extra-xlators
+Summary:          Extra Gluster filesystem Translators
+Group:            Applications/File
+# We need -api rpm for its __init__.py in Python site-packages area
+Requires:         %{name}-api = %{version}-%{release}
+Requires:         python python-ctypes
+
+%description extra-xlators
+GlusterFS is a clustered file-system capable of scaling to several
+petabytes. It aggregates various storage bricks over Infiniband RDMA
+or TCP/IP interconnect into one large parallel network file
+system. GlusterFS is one of the most sophisticated file systems in
+terms of features and extensibility.  It borrows a powerful concept
+called Translators from GNU Hurd kernel. Much of the code in GlusterFS
+is in user space and easily manageable.
+
+This package provides extra filesystem Translators, such as Glupy,
+for GlusterFS.
 %endif
 
 %package fuse
 Summary:          Fuse client
 Group:            Applications/File
 BuildRequires:    fuse-devel
-#%if ( 0%{!?_without_fusermount:1} )
-#Requires:         /usr/bin/fusermount
-#%endif
 
 Requires:         %{name} = %{version}-%{release}
 
@@ -288,23 +354,41 @@ is in user space and easily manageable.
 
 This package provides support to FUSE based clients.
 
-%if 0%{?_build_server}
-%package server
-Summary:          Clustered file-system server
-License:          GPLv3+
-Group:            System Environment/Daemons
+%if ( 0%{?_build_server} )
+%if ( 0%{!?_without_georeplication:1} )
+%package geo-replication
+Summary:          GlusterFS Geo-replication
+Group:            Applications/File
 Requires:         %{name} = %{version}-%{release}
-Requires:         %{name}-libs = %{version}-%{release}
-Requires:         %{name}-fuse = %{version}-%{release}
-Requires:         %{name}-geo-replication = %{version}-%{release}
-Requires:         openssl
-%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 )
-Requires:         rpcbind
-%else
-Requires:         portmap
+Requires:         %{name}-server = %{version}-%{release}
+Requires:         python python-ctypes
+
+%description geo-replication
+GlusterFS is a clustered file-system capable of scaling to several
+peta-bytes. It aggregates various storage bricks over Infiniband RDMA
+or TCP/IP interconnect into one large parallel network file
+system. GlusterFS is one of the most sophisticated file system in
+terms of features and extensibility.  It borrows a powerful concept
+called Translators from GNU Hurd kernel. Much of the code in GlusterFS
+is in userspace and easily manageable.
+
+This package provides support to geo-replication.
+%endif
 %endif
 
-%description server
+%package libs
+Summary:          GlusterFS common libraries
+Group:            Applications/File
+%if ( 0%{!?_without_syslog:1} )
+%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} > 6 )
+Requires:         rsyslog-mmjsonparse
+%endif
+%if ( 0%{?rhel} && 0%{?rhel} == 6 )
+Requires:         rsyslog-mmcount
+%endif
+%endif
+
+%description libs
 GlusterFS is a clustered file-system capable of scaling to several
 petabytes. It aggregates various storage bricks over Infiniband RDMA
 or TCP/IP interconnect into one large parallel network file
@@ -313,18 +397,17 @@ terms of features and extensibility.  It borrows a powerful concept
 called Translators from GNU Hurd kernel. Much of the code in GlusterFS
 is in user space and easily manageable.
 
-This package provides the glusterfs server daemon.
-%endif
+This package provides the base GlusterFS libraries
 
-%package api
-Summary:          Clustered file-system api library
-License:          GPLv2 or LGPLv3+
-Group:            System Environment/Daemons
-Requires:         %{name}-libs = %{version}-%{release}
-# we provide the Python package/namespace 'gluster'
-Provides:         python-gluster = %{version}-%{release}
+%if ( 0%{!?_without_rdma:1} )
+%package rdma
+Summary:          GlusterFS rdma support for ib-verbs
+Group:            Applications/File
+BuildRequires:    libibverbs-devel
+BuildRequires:    librdmacm-devel
+Requires:         %{name} = %{version}-%{release}
 
-%description api
+%description rdma
 GlusterFS is a clustered file-system capable of scaling to several
 petabytes. It aggregates various storage bricks over Infiniband RDMA
 or TCP/IP interconnect into one large parallel network file
@@ -333,14 +416,30 @@ terms of features and extensibility.  It borrows a powerful concept
 called Translators from GNU Hurd kernel. Much of the code in GlusterFS
 is in user space and easily manageable.
 
-This package provides the glusterfs libgfapi library
+This package provides support to ib-verbs library.
+%endif
+
+%if ( 0%{?_build_server} )
+%if ( 0%{!?_without_regression_tests:1} )
+%package regression-tests
+Summary:          Development Tools
+Group:            Development/Tools
+Requires:         %{name} = %{version}-%{release}
+Requires:         %{name}-fuse = %{version}-%{release}
+Requires:         %{name}-server = %{version}-%{release}
+Requires:         perl(App::Prove) perl(Test::Harness) gcc util-linux-ng lvm2
+Requires:         python attr dbench git nfs-utils xfsprogs
+
+%description regression-tests
+The Gluster Test Framework, is a suite of scripts used for
+regression testing of Gluster.
+%endif
 
-%if 0%{?_build_server}
 %if ( 0%{!?_without_ocf:1} )
 %package resource-agents
 Summary:          OCF Resource Agents for GlusterFS
 License:          GPLv3+
-%if ( ! ( 0%{?rhel} && 0%{?rhel} < 6 ) )
+%if ( ! ( 0%{?rhel} && 0%{?rhel} < 6 || 0%{?sles_version} ) )
 # EL5 does not support noarch sub-packages
 BuildArch:        noarch
 %endif
@@ -368,33 +467,24 @@ This package provides the resource agents which plug glusterd into
 Open Cluster Framework (OCF) compliant cluster resource managers,
 like Pacemaker.
 %endif
-%endif
 
-%package devel
-Summary:          Development Libraries
-License:          GPLv2 or LGPLv3+
-Group:            Development/Libraries
+%package server
+Summary:          Clustered file-system server
+Group:            System Environment/Daemons
+Requires:         %{name} = %{version}-%{release}
+Requires:         %{name}-cli = %{version}-%{release}
 Requires:         %{name}-libs = %{version}-%{release}
+Requires:         %{name}-fuse = %{version}-%{release}
+%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 )
+Requires:         rpcbind
+%else
+Requires:         portmap
+%endif
+%if ( 0%{?rhel} && 0%{?rhel} < 6 )
+Obsoletes:        %{name}-geo-replication = %{version}-%{release}
+%endif
 
-%description devel
-GlusterFS is a clustered file-system capable of scaling to several
-petabytes. It aggregates various storage bricks over Infiniband RDMA
-or TCP/IP interconnect into one large parallel network file
-system. GlusterFS is one of the most sophisticated file systems in
-terms of features and extensibility.  It borrows a powerful concept
-called Translators from GNU Hurd kernel. Much of the code in GlusterFS
-is in user space and easily manageable.
-
-This package provides the development libraries.
-
-
-%package api-devel
-Summary:          Development Libraries
-License:          GPLv2 or LGPLv3+
-Group:            Development/Libraries
-Requires:         %{name}-api = %{version}-%{release}
-
-%description api-devel
+%description server
 GlusterFS is a clustered file-system capable of scaling to several
 petabytes. It aggregates various storage bricks over Infiniband RDMA
 or TCP/IP interconnect into one large parallel network file
@@ -403,96 +493,136 @@ terms of features and extensibility.  It borrows a powerful concept
 called Translators from GNU Hurd kernel. Much of the code in GlusterFS
 is in user space and easily manageable.
 
-This package provides the api include files.
+This package provides the glusterfs server daemon.
+%endif
 
 %prep
 %setup -q -n %{name}-%{version}%{?prereltag}
 
 %build
 ./autogen.sh
-%configure %{?_without_rdma} %{?_without_epoll} %{?_without_fusermount} %{?_without_georeplication} %{?_without_ocf} %{?_without_bd} %{?_without_syslog}
+%configure \
+        %{?_without_rdma} \
+        %{?_without_epoll} \
+        %{?_without_fusermount} \
+        %{?_without_georeplication} \
+        %{?_without_ocf} \
+        %{?_without_syslog} \
+        %{?_without_bd} \
+        %{?_without_qemu_block} \
+        %{?_without_systemtap}
 
 # fix hardening and remove rpath in shlibs
 %if ( 0%{?fedora} && 0%{?fedora} > 17 ) || ( 0%{?rhel} && 0%{?rhel} > 6 )
-%{__sed} -i 's| \\\$compiler_flags |&\\\$LDFLAGS |' libtool
+sed -i 's| \\\$compiler_flags |&\\\$LDFLAGS |' libtool
 %endif
-%{__sed} -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|' libtool
-%{__sed} -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|' libtool
+sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|' libtool
+sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|' libtool
+
+make %{?_smp_mflags}
+
+# Build Glupy
+pushd xlators/features/glupy/src
+FLAGS="$RPM_OPT_FLAGS" python setup.py build
+popd
 
-%{__make} %{?_smp_mflags}
+# Build the Python libgfapi examples
+pushd api/examples
+FLAGS="$RPM_OPT_FLAGS" python setup.py build
+popd
 
 %install
-%{__rm} -rf %{buildroot}
-%{__make} install DESTDIR=%{buildroot}
+rm -rf %{buildroot}
+make install DESTDIR=%{buildroot}
+# install the Glupy Python library in /usr/lib/python*/site-packages
+pushd xlators/features/glupy/src
+python setup.py install --skip-build --verbose --root %{buildroot}
+popd
+# install the gfapi Python library in /usr/lib/python*/site-packages
+pushd api/examples
+python setup.py install --skip-build --verbose --root %{buildroot}
+popd
 # Install include directory
-%{__mkdir_p} %{buildroot}%{_includedir}/glusterfs
-%{__install} -p -m 0644 libglusterfs/src/*.h \
+mkdir -p %{buildroot}%{_includedir}/glusterfs
+install -p -m 0644 libglusterfs/src/*.h \
     %{buildroot}%{_includedir}/glusterfs/
-%{__install} -p -m 0644 contrib/uuid/*.h \
+install -p -m 0644 contrib/uuid/*.h \
     %{buildroot}%{_includedir}/glusterfs/
 # Following needed by hekafs multi-tenant translator
-%{__mkdir_p} %{buildroot}%{_includedir}/glusterfs/rpc
-%{__install} -p -m 0644 rpc/rpc-lib/src/*.h \
+mkdir -p %{buildroot}%{_includedir}/glusterfs/rpc
+install -p -m 0644 rpc/rpc-lib/src/*.h \
     %{buildroot}%{_includedir}/glusterfs/rpc/
-%{__install} -p -m 0644 rpc/xdr/src/*.h \
+install -p -m 0644 rpc/xdr/src/*.h \
     %{buildroot}%{_includedir}/glusterfs/rpc/
-%{__mkdir_p} %{buildroot}%{_includedir}/glusterfs/server
-%{__install} -p -m 0644 xlators/protocol/server/src/*.h \
+mkdir -p %{buildroot}%{_includedir}/glusterfs/server
+install -p -m 0644 xlators/protocol/server/src/*.h \
     %{buildroot}%{_includedir}/glusterfs/server/
+%if ( 0%{?_build_server} )
 %if ( 0%{_for_fedora_koji_builds} )
-%{__install} -D -p -m 0644 %{SOURCE1} \
+install -D -p -m 0644 %{SOURCE1} \
     %{buildroot}%{_sysconfdir}/sysconfig/glusterd
-%{__install} -D -p -m 0644 %{SOURCE2} \
+install -D -p -m 0644 %{SOURCE2} \
     %{buildroot}%{_sysconfdir}/sysconfig/glusterfsd
 %else
-%{__install} -D -p -m 0644 extras/glusterd-sysconfig \
+install -D -p -m 0644 extras/glusterd-sysconfig \
     %{buildroot}%{_sysconfdir}/sysconfig/glusterd
 %endif
-%if ( 0%{?rhel} && 0%{?rhel} >= 5 )
-%{__mkdir_p} %{buildroot}%{python_sitelib}/gluster
-touch %{buildroot}%{python_sitelib}/gluster/__init__.py
 %endif
 
 %if ( 0%{_for_fedora_koji_builds} )
 %if ( 0%{?rhel} && 0%{?rhel} <= 5 )
-%{__install} -D -p -m 0755 %{SOURCE6} \
+install -D -p -m 0755 %{SOURCE6} \
     %{buildroot}%{_sysconfdir}/sysconfig/modules/glusterfs-fuse.modules
 %endif
 %endif
 
-%{__mkdir_p} %{buildroot}%{_localstatedir}/log/glusterd
-%{__mkdir_p} %{buildroot}%{_localstatedir}/log/glusterfs
-%{__mkdir_p} %{buildroot}%{_localstatedir}/log/glusterfsd
-%{__mkdir_p} %{buildroot}%{_localstatedir}/run/gluster
+mkdir -p %{buildroot}%{_localstatedir}/log/glusterd
+mkdir -p %{buildroot}%{_localstatedir}/log/glusterfs
+mkdir -p %{buildroot}%{_localstatedir}/log/glusterfsd
+mkdir -p %{buildroot}%{_localstatedir}/run/gluster
 
 # Remove unwanted files from all the shared libraries
 find %{buildroot}%{_libdir} -name '*.a' -delete
 find %{buildroot}%{_libdir} -name '*.la' -delete
 
-# Remove installed docs, they're included by %%doc
-%{__rm} -rf %{buildroot}%{_datadir}/doc/glusterfs/
+# Remove installed docs, the ones we want are included by %%doc, in
+# /usr/share/doc/glusterfs or /usr/share/doc/glusterfs-x.y.z depending
+# on the distribution
+%if ( 0%{?fedora} && 0%{?fedora} > 19 ) || ( 0%{?rhel} && 0%{?rhel} > 6 )
+rm -rf %{buildroot}%{_pkgdocdir}/*
+%else
+rm -rf %{buildroot}%{_defaultdocdir}/%{name}
+mkdir -p %{buildroot}%{_pkgdocdir}
+%endif
+head -50 ChangeLog > ChangeLog.head && mv ChangeLog.head ChangeLog
+cat << EOM >> ChangeLog
+
+More commit messages for this ChangeLog can be found at
+https://forge.gluster.org/glusterfs-core/glusterfs/commits/v%{version}%{?prereltag}
+EOM
 
 # Remove benchmarking and other unpackaged files
-%{__rm} -rf %{buildroot}/benchmarking
-%{__rm} -f %{buildroot}/glusterfs-mode.el
-%{__rm} -f %{buildroot}/glusterfs.vim
+%if ( 0%{?rhel} && 0%{?rhel} < 6 )
+rm -rf %{buildroot}/benchmarking
+rm -f %{buildroot}/glusterfs-mode.el
+rm -f %{buildroot}/glusterfs.vim
+%else
+# make install always puts these in %%{_defaultdocdir}/%%{name} so don't
+# use %%{_pkgdocdir}; that will be wrong on later Fedora distributions
+rm -rf %{buildroot}%{_defaultdocdir}/%{name}/benchmarking
+rm -f %{buildroot}%{_defaultdocdir}/%{name}/glusterfs-mode.el
+rm -f %{buildroot}%{_defaultdocdir}/%{name}/glusterfs.vim
+%endif
 
+%if ( 0%{?_build_server} )
 # Create working directory
-%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd
-%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/glustershd
-%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/nfs
-%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/peers
-%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/quotad
-%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/vols
-%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/groups
+mkdir -p %{buildroot}%{_sharedstatedir}/glusterd
 
 # Update configuration file to /var/lib working directory
 sed -i 's|option working-directory /etc/glusterd|option working-directory %{_sharedstatedir}/glusterd|g' \
     %{buildroot}%{_sysconfdir}/glusterfs/glusterd.vol
 
-%if 0%{?_build_server}
 # Install glusterfsd .service or init.d file
-%if ( 0%{?_with_systemd:1} )
 %if ( 0%{_for_fedora_koji_builds} )
 %_init_install %{glusterfsd_service} glusterfsd
 %endif
@@ -500,143 +630,419 @@ sed -i 's|option working-directory /etc/glusterd|option working-directory %{_sha
 
 %if ( 0%{_for_fedora_koji_builds} )
 # Client logrotate entry
-%{__install} -D -p -m 0644 %{SOURCE3} \
+install -D -p -m 0644 %{SOURCE3} \
     %{buildroot}%{_sysconfdir}/logrotate.d/glusterfs-fuse
 
 # Server logrotate entry
-%{__install} -D -p -m 0644 %{SOURCE4} \
+%if ( 0%{?_build_server} )
+install -D -p -m 0644 %{SOURCE4} \
     %{buildroot}%{_sysconfdir}/logrotate.d/glusterd
 # Legacy server logrotate entry
-%{__install} -D -p -m 0644 %{SOURCE5} \
+install -D -p -m 0644 %{SOURCE5} \
     %{buildroot}%{_sysconfdir}/logrotate.d/glusterfsd
+%endif
 %else
-%{__install} -D -p -m 0644 extras/glusterfs-logrotate \
+install -D -p -m 0644 extras/glusterfs-logrotate \
     %{buildroot}%{_sysconfdir}/logrotate.d/glusterfs
-# geo replication logrotate file.
-%{__install} -D -p -m 0644 extras/glusterfs-georep-logrotate \
-    %{buildroot}%{_sysconfdir}/logrotate.d/glusterfs-georep
 %endif
 
+%if ( 0%{?_build_server} )
 %if ( 0%{!?_without_georeplication:1} )
-# geo-rep ghosts
-%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/geo-replication
+mkdir -p %{buildroot}%{_sharedstatedir}/glusterd/geo-replication
 touch %{buildroot}%{_sharedstatedir}/glusterd/geo-replication/gsyncd_template.conf
+install -D -p -m 0644 extras/glusterfs-georep-logrotate \
+    %{buildroot}%{_sysconfdir}/logrotate.d/glusterfs-georep
+%endif
 %endif
 
-# Following needed by the hooks interface
-subdirs=("add-brick" "create" "delete" "remove-brick" "set" "start" "stop" "gsync-create")
+%if ( 0%{!?_without_syslog:1} )
+%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} > 6 )
+install -D -p -m 0644 extras/gluster-rsyslog-7.2.conf \
+    %{buildroot}%{_sysconfdir}/rsyslog.d/gluster.conf.example
+%endif
+
+%if ( 0%{?rhel} && 0%{?rhel} == 6 )
+install -D -p -m 0644 extras/gluster-rsyslog-5.8.conf \
+    %{buildroot}%{_sysconfdir}/rsyslog.d/gluster.conf.example
+%endif
+
+%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 )
+install -D -p -m 0644 extras/logger.conf.example \
+    %{buildroot}%{_sysconfdir}/glusterfs/logger.conf.example
+%endif
+%endif
+
+%if ( 0%{?_build_server} )
+subdirs=("add-brick" "create" "copy-file" "delete" "gsync-create" "remove-brick" "reset" "set" "start" "stop")
 for dir in ${subdirs[@]}
 do
-%{__mkdir_p} %{buildroot}%{_datadir}/glusterfs/hook-scripts/"$dir"/{pre,post}
-%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/"$dir"/{pre,post}
+mkdir -p %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/"$dir"/{pre,post}
 done
+mkdir -p %{buildroot}%{_sharedstatedir}/glusterd/glustershd
+mkdir -p %{buildroot}%{_sharedstatedir}/glusterd/peers
+mkdir -p %{buildroot}%{_sharedstatedir}/glusterd/vols
+mkdir -p %{buildroot}%{_sharedstatedir}/glusterd/nfs/run
+touch %{buildroot}%{_sharedstatedir}/glusterd/glusterd.info
+touch %{buildroot}%{_sharedstatedir}/glusterd/options
+touch %{buildroot}%{_sharedstatedir}/glusterd/nfs/nfs-server.vol
+touch %{buildroot}%{_sharedstatedir}/glusterd/nfs/run/nfs.pid
+
+%if ( 0%{!?_without_georeplication:1} )
+install -p -m 0744 extras/hook-scripts/S56glusterd-geo-rep-create-post.sh \
+    %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/gsync-create/post
+%endif
 %{__install} -p -m 0744 extras/hook-scripts/start/post/*.sh   \
     %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/start/post
 %{__install} -p -m 0744 extras/hook-scripts/stop/pre/*.sh   \
     %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/stop/pre
 %{__install} -p -m 0744 extras/hook-scripts/set/post/*.sh   \
     %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/set/post
-%{__install} -p -m 0744 extras/hook-scripts/S56glusterd-geo-rep-create-post.sh \
-    %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/gsync-create/post
 %{__install} -p -m 0744 extras/hook-scripts/add-brick/post/*.sh   \
     %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/add-brick/post
 %{__install} -p -m 0744 extras/hook-scripts/add-brick/pre/*.sh   \
     %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/add-brick/pre
+%{__install} -p -m 0744 extras/hook-scripts/reset/post/*.sh   \
+    %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/reset/post
+
 
-%{__install} -p -m 0644 extras/group-virt.example \
-    %{buildroot}%{_sharedstatedir}/glusterd/groups/virt
-%{__install} -p -m 0644 extras/group-small-file-perf.example \
-    %{buildroot}%{_sharedstatedir}/glusterd/groups/small-file-perf
-%endif
-
-%if !0%{?_build_server}
-echo "Removing files that are only used in the server subpackages."
-rm %{buildroot}%{_sysconfdir}/glusterfs/glusterd.vol
-rm %{buildroot}%{_sysconfdir}/init.d/glusterd
-rm %{buildroot}%{_sbindir}/gluster
-rm %{buildroot}%{_sbindir}/glusterd
-rm %{buildroot}%{_sbindir}/glfsheal
-rm %{buildroot}%{_libexecdir}/glusterfs/gsyncd
-rm -rf %{buildroot}%{_libexecdir}/glusterfs/python/syncdaemon
-rm -rf %{buildroot}%{_libexecdir}/glusterfs/quota
-rm %{buildroot}%{_sysconfdir}/sysconfig/glusterd
-rm %{buildroot}%{_libexecdir}/glusterfs/gverify.sh
-rm %{buildroot}%{_libexecdir}/glusterfs/peer_add_secret_pub
-rm %{buildroot}%{_libexecdir}/glusterfs/peer_gsec_create
-rm -rf %{buildroot}%{_prefix}/lib/ocf/resource.d/glusterfs
-rm %{buildroot}%{_datadir}/glusterfs/scripts/generate-gfid-file.sh
-rm %{buildroot}%{_datadir}/glusterfs/scripts/get-gfid.sh
-rm %{buildroot}%{_datadir}/glusterfs/scripts/gsync-sync-gfid
-rm %{buildroot}%{_datadir}/glusterfs/scripts/gsync-upgrade.sh
-rm %{buildroot}%{_datadir}/glusterfs/scripts/slave-upgrade.sh
+find ./tests ./run-tests.sh -type f | cpio -pd %{buildroot}%{_prefix}/share/glusterfs
 %endif
 
+%clean
+rm -rf %{buildroot}
+
+##-----------------------------------------------------------------------------
+## All %post should be placed here and keep them sorted
+##
+%post
 %if ( 0%{!?_without_syslog:1} )
-%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} > 6 )
-%{__install} -D -p -m 0644 extras/gluster-rsyslog-7.2.conf \
-    %{buildroot}%{_sysconfdir}/rsyslog.d/gluster.conf.example
+%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 )
+%_init_restart rsyslog
+%endif
 %endif
 
-%if ( 0%{?rhel} && 0%{?rhel} == 6 )
-%{__install} -D -p -m 0644 extras/gluster-rsyslog-5.8.conf \
-    %{buildroot}%{_sysconfdir}/rsyslog.d/gluster.conf.example
+%post api
+/sbin/ldconfig
+
+%if ( 0%{?_build_server} )
+%if ( 0%{!?_without_georeplication:1} )
+%post geo-replication
+#restart glusterd.
+if [ $1 -ge 1 ]; then
+    %_init_restart glusterd
+fi
+%endif
+%endif
+
+%post libs
+/sbin/ldconfig
+
+%if ( 0%{?_build_server} )
+%post server
+# Legacy server
+%_init_enable glusterd
+%_init_enable glusterfsd
+
+# Genuine Fedora (and EPEL) builds never put gluster files in /etc; if
+# there are any files in /etc from a prior gluster.org install, move them
+# to /var/lib. (N.B. Starting with 3.3.0 all gluster files are in /var/lib
+# in gluster.org RPMs.) Be careful to copy them on the off chance that
+# /etc and /var/lib are on separate file systems
+if [ -d /etc/glusterd -a ! -h %{_sharedstatedir}/glusterd ]; then
+    mkdir -p %{_sharedstatedir}/glusterd
+    cp -a /etc/glusterd %{_sharedstatedir}/glusterd
+    rm -rf /etc/glusterd
+    ln -sf %{_sharedstatedir}/glusterd /etc/glusterd
+fi
+
+# Rename old volfiles in an RPM-standard way.  These aren't actually
+# considered package config files, so %%config doesn't work for them.
+if [ -d %{_sharedstatedir}/glusterd/vols ]; then
+    for file in $(find %{_sharedstatedir}/glusterd/vols -name '*.vol'); do
+        newfile=${file}.rpmsave
+        echo "warning: ${file} saved as ${newfile}"
+        cp ${file} ${newfile}
+    done
+fi
+
+cp %{_sysconfdir}/glusterfs/group-small-file-perf.example /var/lib/glusterd/groups/small-file-perf
+# add marker translator
+# but first make certain that there are no old libs around to bite us
+# BZ 834847
+if [ -e /etc/ld.so.conf.d/glusterfs.conf ]; then
+    rm -f /etc/ld.so.conf.d/glusterfs.conf
+    /sbin/ldconfig
+fi
+pidof -c -o %PPID -x glusterd &> /dev/null
+if [ $? -eq 0 ]; then
+    kill -9 `pgrep -f gsyncd.py` &> /dev/null
+
+    killall glusterd &> /dev/null
+    glusterd --xlator-option *.upgrade=on -N
+else
+    glusterd --xlator-option *.upgrade=on -N
+fi
 %endif
 
+##-----------------------------------------------------------------------------
+## All %preun should be placed here and keep them sorted
+##
+%if ( 0%{?_build_server} )
+%preun server
+if [ $1 -eq 0 ]; then
+    if [ -f %_init_glusterfsd ]; then
+        %_init_stop glusterfsd
+    fi
+    %_init_stop glusterd
+    if [ -f %_init_glusterfsd ]; then
+        %_init_disable glusterfsd
+    fi
+    %_init_disable glusterd
+fi
+if [ $1 -ge 1 ]; then
+    if [ -f %_init_glusterfsd ]; then
+        %_init_restart glusterfsd
+    fi
+    %_init_restart glusterd
+fi
+%endif
+
+##-----------------------------------------------------------------------------
+## All %postun should be placed here and keep them sorted
+##
+%postun
+/sbin/ldconfig
+%if ( 0%{!?_without_syslog:1} )
 %if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 )
-%{__install} -D -p -m 0644 extras/logger.conf.example \
-    %{buildroot}%{_sysconfdir}/glusterfs/logger.conf.example
+%_init_restart rsyslog
 %endif
 %endif
 
-%if ( !0%{!?_without_syslog:1} )
-rm %{buildroot}%{_sysconfdir}/glusterfs/gluster-rsyslog-5.8.conf
-rm %{buildroot}%{_sysconfdir}/glusterfs/gluster-rsyslog-7.2.conf
-rm %{buildroot}%{_sysconfdir}/glusterfs/logger.conf.example
-%endif
-
-# the rest of the ghosts
-#touch %{buildroot}%{_sharedstatedir}/glusterd/glusterd.info
-#touch %{buildroot}%{_sharedstatedir}/glusterd/options
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/stop
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/stop/post
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/stop/pre
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/start
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/start/post
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/start/pre
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/remove-brick
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/remove-brick/post
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/remove-brick/pre
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/add-brick
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/add-brick/post
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/add-brick/pre
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/set
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/set/post
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/set/pre
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/create
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/create/post
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/create/pre
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/delete
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/delete/post
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/delete/pre
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/copy-file
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/copy-file/post
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/copy-file/pre
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/gsync-create
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/gsync-create/post
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/gsync-create/pre
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/glustershd
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/peers
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/vols
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/groups
-#%{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/nfs/run
-#touch %{buildroot}%{_sharedstatedir}/glusterd/nfs/nfs-server.vol
-#touch %{buildroot}%{_sharedstatedir}/glusterd/nfs/run/nfs.pid
+%postun api
+/sbin/ldconfig
 
-%clean
-%{__rm} -rf %{buildroot}
+%postun libs
+/sbin/ldconfig
+
+##-----------------------------------------------------------------------------
+## All %files should be placed here and keep them sorted
+##
+%files
+%doc ChangeLog COPYING-GPLV2 COPYING-LGPLV3 INSTALL README THANKS
+%config(noreplace) %{_sysconfdir}/logrotate.d/*
+%if ( 0%{!?_without_syslog:1} )
+%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 )
+%{_sysconfdir}/rsyslog.d/gluster.conf.example
+%endif
+%endif
+%{_libdir}/glusterfs
+%{_sbindir}/glusterfs*
+%{_mandir}/man8/*gluster*.8*
+%exclude %{_mandir}/man8/gluster.8*
+%dir %{_localstatedir}/log/glusterfs
+%dir %{_localstatedir}/run/gluster
+%dir %{_sharedstatedir}/glusterd
+%if ( 0%{!?_without_rdma:1} )
+%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport/rdma*
+%endif
+# server-side, etc., xlators in other RPMs
+%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/api*
+%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/fuse*
+%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/storage*
+%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/posix*
+%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/server*
+%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mgmt*
+%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs*
+# Glupy files are in the -extra-xlators package
+%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy*
+# sample xlators not generally used or usable
+%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/encryption/rot-13*
+%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/mac-compat*
+%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/testing/performance/symlink-cache*
+%{_datadir}/glusterfs/scripts/post-upgrade-script-for-quota.sh
+%{_datadir}/glusterfs/scripts/pre-upgrade-script-for-quota.sh
+%if ( ! 0%{?_build_server} )
+%if ( 0%{?rhel} && 0%{?rhel} > 5 )
+%exclude %{_libexecdir}/glusterfs/*
+%endif
+%exclude %{_datadir}/glusterfs/*
+%exclude %{_prefix}/lib/ocf/*
+%exclude %{_sharedstatedir}/glusterd/*
+%exclude %{_sysconfdir}/glusterfs/*
+%exclude %_init_glusterd
+%exclude %{_sbindir}/glusterd
+%endif
+%exclude %{_prefix}/share/glusterfs/*
+%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy.so
+%exclude %{python_sitelib}/gluster/glupy.*
+%if ( 0%{?rhel} && 0%{?rhel} > 5 )
+%exclude %{python_sitelib}/glusterfs_glupy*.egg-info
+%endif
+%exclude %{_sbindir}/glfsheal
+
+%files api
+%exclude %{_libdir}/*.so
+# Shared Python-GlusterFS files
+%{python_sitelib}/gluster/__init__.*
+# libgfapi files
+%{_libdir}/libgfapi.*
+%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/api*
+%{python_sitelib}/gluster/gfapi.*
+# Don't expect a .egg-info file on EL5
+%if ( ! ( 0%{?rhel} && 0%{?rhel} < 6 ) )
+%{python_sitelib}/glusterfs_api*.egg-info
+%endif
+
+%files api-devel
+%{_libdir}/pkgconfig/glusterfs-api.pc
+%{_libdir}/pkgconfig/libgfchangelog.pc
+%{_libdir}/libgfapi.so
+%{_includedir}/glusterfs/api/*
+
+%files cli
+%{_sbindir}/gluster
+%{_mandir}/man8/gluster.8*
 
+%files devel
+%{_includedir}/glusterfs
+%exclude %{_includedir}/glusterfs/y.tab.h
+%exclude %{_includedir}/glusterfs/api
+%exclude %{_libdir}/libgfapi.so
+%{_libdir}/*.so
+# Glupy Translator examples
+%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/debug-trace.*
+%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/helloworld.*
+%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/negative.*
+
+%if ( 0%{!?_without_extra_xlators:1} )
+%files extra-xlators
+# Glupy C shared library
+%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy.so
+# Glupy Python files
+%{python_sitelib}/gluster/glupy.*
+# Don't expect a .egg-info file on EL5
+%if ( ! ( 0%{?rhel} && 0%{?rhel} < 6 ) )
+%{python_sitelib}/glusterfs_glupy*.egg-info
+%endif
+%endif
+
+%files fuse
+%if ( 0%{_for_fedora_koji_builds} )
+%config(noreplace) %{_sysconfdir}/logrotate.d/glusterfs-fuse
+%endif
+%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/fuse*
+/sbin/mount.glusterfs
+%if ( 0%{!?_without_fusermount:1} )
+%{_bindir}/fusermount-glusterfs
+%endif
+%if ( 0%{_for_fedora_koji_builds} )
+%if ( 0%{?rhel} && 0%{?rhel} <= 5 )
+%{_sysconfdir}/sysconfig/modules/glusterfs-fuse.modules
+%endif
+%endif
+
+%if ( 0%{?_build_server} )
+%if ( 0%{!?_without_georeplication:1} )
+%files geo-replication
+%{_sysconfdir}/logrotate.d/glusterfs-georep
+%{_libexecdir}/glusterfs/gsyncd
+%{_libexecdir}/glusterfs/python/syncdaemon/*
+%{_libexecdir}/glusterfs/gverify.sh
+%{_libexecdir}/glusterfs/set_geo_rep_pem_keys.sh
+%{_libexecdir}/glusterfs/peer_add_secret_pub
+%{_libexecdir}/glusterfs/peer_gsec_create
+%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/geo-replication
+%{_sharedstatedir}/glusterd/hooks/1/gsync-create/post/S56glusterd-geo-rep-create-post.sh
+%{_datadir}/glusterfs/scripts/get-gfid.sh
+%{_datadir}/glusterfs/scripts/slave-upgrade.sh
+%{_datadir}/glusterfs/scripts/gsync-upgrade.sh
+%{_datadir}/glusterfs/scripts/generate-gfid-file.sh
+%{_datadir}/glusterfs/scripts/gsync-sync-gfid
+%ghost %attr(0644,-,-) %{_sharedstatedir}/glusterd/geo-replication/gsyncd_template.conf
+%endif
+%endif
+
+%files libs
+%{_libdir}/*.so.*
+%exclude %{_libdir}/libgfapi.*
+
+%if ( 0%{!?_without_rdma:1} )
+%files rdma
+%{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport/rdma*
+%endif
+
+%if ( 0%{?_build_server} )
+%if ( 0%{!?_without_regression_tests:1} )
+%files regression-tests
+%{_prefix}/share/glusterfs/*
+%exclude %{_prefix}/share/glusterfs/tests/basic/rpm.t
+%endif
+
+%if ( 0%{!?_without_ocf:1} )
+%files resource-agents
+# /usr/lib is the standard for OCF, also on x86_64
+%{_prefix}/lib/ocf/resource.d/glusterfs
+%endif
+
+%files server
+%doc extras/clear_xattrs.sh
+%if ( 0%{_for_fedora_koji_builds} )
+%config(noreplace) %{_sysconfdir}/logrotate.d/glusterd
+%endif
+%config(noreplace) %{_sysconfdir}/sysconfig/glusterd
+%config(noreplace) %{_sysconfdir}/glusterfs
+%dir %{_sharedstatedir}/glusterd/groups
+%config(noreplace) %{_sharedstatedir}/glusterd/groups/virt
+# Legacy configs
+%if ( 0%{_for_fedora_koji_builds} )
+%config(noreplace) %{_sysconfdir}/logrotate.d/glusterfsd
+%config(noreplace) %{_sysconfdir}/sysconfig/glusterfsd
+%endif
+%config %{_sharedstatedir}/glusterd/hooks/1/add-brick/post/disabled-quota-root-xattr-heal.sh
+%config %{_sharedstatedir}/glusterd/hooks/1/add-brick/pre/S28Quota-enable-root-xattr-heal.sh
+%config %{_sharedstatedir}/glusterd/hooks/1/set/post/S30samba-set.sh
+%config %{_sharedstatedir}/glusterd/hooks/1/set/post/S31ganesha-set.sh
+%config %{_sharedstatedir}/glusterd/hooks/1/start/post/S29CTDBsetup.sh
+%config %{_sharedstatedir}/glusterd/hooks/1/start/post/S30samba-start.sh
+%config %{_sharedstatedir}/glusterd/hooks/1/stop/pre/S30samba-stop.sh
+%config %{_sharedstatedir}/glusterd/hooks/1/stop/pre/S29CTDB-teardown.sh
+%config %{_sharedstatedir}/glusterd/hooks/1/reset/post/S31ganesha-reset.sh
+# init files
+%_init_glusterd
+%if ( 0%{_for_fedora_koji_builds} )
+%_init_glusterfsd
+%endif
+# binaries
+%{_sbindir}/glusterd
+%{_sbindir}/glfsheal
+%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/storage*
+%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/posix*
+%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/server*
+%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mgmt*
+%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs*
+%{_sharedstatedir}/glusterd/*
+#hookscripts
+%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks
+%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1
+%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick
+%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick/post
+%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick/pre
+%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/set
+%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/set/post
+%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start
+%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start/post
+%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop
+%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop/pre
+
+%ghost %attr(0644,-,-) %config(noreplace) %{_sharedstatedir}/glusterd/glusterd.info
+%ghost %attr(0600,-,-) %{_sharedstatedir}/glusterd/options
+%ghost %attr(0600,-,-) %{_sharedstatedir}/glusterd/nfs/nfs-server.vol
+%ghost %attr(0600,-,-) %{_sharedstatedir}/glusterd/nfs/run/nfs.pid
+%endif
+
+##-----------------------------------------------------------------------------
+## All %pretrans should be placed here and keep them sorted
+##
 %if 0%{?_build_server}
 %pretrans -p <lua>
 if not posix.access("/bin/bash", "x") then
@@ -682,51 +1088,10 @@ os.remove(tmpname)
 if not (ok == 0) then
    error("Detected running glusterfs processes", ok)
 end
-%endif
-
-%post
-/sbin/ldconfig
-
-%postun
-/sbin/ldconfig
-
-%files
-%defattr(-,root,root,-)
-%doc ChangeLog COPYING-GPLV2 COPYING-LGPLV3 INSTALL README THANKS
-%config(noreplace) %{_sysconfdir}/glusterfs/glusterfs-logrotate
-%config(noreplace) %{_sysconfdir}/glusterfs/glusterfs-georep-logrotate
-#%config(noreplace) %{_sysconfdir}/logrotate.d/*
-#%config(noreplace) %{_sysconfdir}/sysconfig/*
-%config(noreplace) %{_sysconfdir}/glusterfs/group-virt.example
-%config(noreplace) %{_sysconfdir}/glusterfs/group-small-file-perf.example
-%if ( 0%{!?_without_syslog:1} )
-%config(noreplace) %{_sysconfdir}/glusterfs/gluster-rsyslog-5.8.conf
-%config(noreplace) %{_sysconfdir}/glusterfs/gluster-rsyslog-7.2.conf
-%config(noreplace) %{_sysconfdir}/glusterfs/logger.conf.example
-%endif
-%{_libdir}/glusterfs
-%{_sbindir}/glusterfs*
-%{_mandir}/man8/*gluster*.8*
-%dir %{_localstatedir}/log/glusterfs
-%dir %{_localstatedir}/run/gluster
-%if ( 0%{!?_without_rdma:1} )
-%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport/rdma*
-%endif
-# server-side, etc., xlators in other RPMs
-%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/api*
-%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/fuse*
-%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/storage*
-%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/posix*
-%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/server*
-%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mgmt*
-%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs*
-# sample xlators not generally used or usable
-%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/encryption/rot-13*
-%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/mac-compat*
-%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/testing/performance/symlink-cache*
 
-%if 0%{?_build_server}
-%pretrans libs -p <lua>
+
+
+%pretrans api -p <lua>
 if not posix.access("/bin/bash", "x") then
     -- initial installation, no shell, no running glusterfsd
     return 0
@@ -755,7 +1120,7 @@ fi
 
 -- rpm in RHEL5 does not have os.tmpname()
 -- io.tmpfile() can not be resolved to a filename to pass to bash :-/
-tmpname = "/tmp/glusterfs-libs_pretrans_" .. os.date("%s")
+tmpname = "/tmp/glusterfs-api_pretrans_" .. os.date("%s")
 tmpfile = io.open(tmpname, "w")
 tmpfile:write(script)
 tmpfile:close()
@@ -764,37 +1129,10 @@ os.remove(tmpname)
 if not (ok == 0) then
    error("Detected running glusterfs processes", ok)
 end
-%endif
-
-%post libs
-/sbin/ldconfig
-%if ( 0%{!?_without_syslog:1} )
-%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 )
-%_init_restart rsyslog
-%endif
-%endif
 
-%postun libs
-/sbin/ldconfig
-%if ( 0%{!?_without_syslog:1} )
-%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 )
-%_init_restart rsyslog
-%endif
-%endif
-
-%files libs
-%{_libdir}/*.so.*
-%if ( 0%{!?_without_syslog:1} )
-%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 )
-%{_sysconfdir}/rsyslog.d/gluster.conf.example
-%endif
-%endif
-%exclude %{_libdir}/libgfapi.*
 
 
-%if ( 0%{!?_without_rdma:1} )
-%if 0%{?_build_server}
-%pretrans rdma -p <lua>
+%pretrans api-devel -p <lua>
 if not posix.access("/bin/bash", "x") then
     -- initial installation, no shell, no running glusterfsd
     return 0
@@ -823,7 +1161,7 @@ fi
 
 -- rpm in RHEL5 does not have os.tmpname()
 -- io.tmpfile() can not be resolved to a filename to pass to bash :-/
-tmpname = "/tmp/glusterfs-rdma_pretrans_" .. os.date("%s")
+tmpname = "/tmp/glusterfs-api-devel_pretrans_" .. os.date("%s")
 tmpfile = io.open(tmpname, "w")
 tmpfile:write(script)
 tmpfile:close()
@@ -832,17 +1170,10 @@ os.remove(tmpname)
 if not (ok == 0) then
    error("Detected running glusterfs processes", ok)
 end
-%endif
 
-%files rdma
-%defattr(-,root,root,-)
-%{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport/rdma*
-%endif
 
-%if 0%{?_build_server}
-%if 0%{?_can_georeplicate}
-%if ( 0%{!?_without_georeplication:1} )
-%pretrans geo-replication -p <lua>
+
+%pretrans devel -p <lua>
 if not posix.access("/bin/bash", "x") then
     -- initial installation, no shell, no running glusterfsd
     return 0
@@ -871,7 +1202,7 @@ fi
 
 -- rpm in RHEL5 does not have os.tmpname()
 -- io.tmpfile() can not be resolved to a filename to pass to bash :-/
-tmpname = "/tmp/glusterfs-geo-replication_pretrans_" .. os.date("%s")
+tmpname = "/tmp/glusterfs-devel_pretrans_" .. os.date("%s")
 tmpfile = io.open(tmpname, "w")
 tmpfile:write(script)
 tmpfile:close()
@@ -881,60 +1212,8 @@ if not (ok == 0) then
    error("Detected running glusterfs processes", ok)
 end
 
-%post geo-replication
-%{__chmod} +x %{_datadir}/glusterfs/scripts/get-gfid.sh
-
-#restart glusterd.
-#if [ $1 -ge 1 ]; then
-#    %_init_restart glusterd
-#fi
-
-%files geo-replication
-%defattr(-,root,root)
-%{_sysconfdir}/logrotate.d/glusterfs-georep
-%{_libexecdir}/glusterfs/gsyncd
-%{_libexecdir}/glusterfs/python/syncdaemon/*
-%{_libexecdir}/glusterfs/gverify.sh
-%{_libexecdir}/glusterfs/peer_add_secret_pub
-%{_libexecdir}/glusterfs/peer_gsec_create
-%dir %{_sharedstatedir}/glusterd/hooks
-%dir %{_sharedstatedir}/glusterd/hooks/1
-%dir %{_sharedstatedir}/glusterd/hooks/1/gsync-create
-%dir %{_sharedstatedir}/glusterd/hooks/1/gsync-create/post
-%{_sharedstatedir}/glusterd/hooks/1/gsync-create/post/S56glusterd-geo-rep-create-post.sh
-%{_datadir}/glusterfs/scripts/get-gfid.sh
-%{_datadir}/glusterfs/scripts/slave-upgrade.sh
-%{_datadir}/glusterfs/scripts/gsync-upgrade.sh
-%{_datadir}/glusterfs/scripts/generate-gfid-file.sh
-%{_datadir}/glusterfs/scripts/gsync-sync-gfid
-%{_sharedstatedir}/glusterd/geo-replication
-%config(noreplace) %{_sharedstatedir}/glusterd/geo-replication/gsyncd_template.conf
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/gsync-create/post
-#%ghost %attr(0644,-,-) %{_sharedstatedir}/glusterd/hooks/1/gsync-create/post/S56glusterd-geo-rep-create-post.sh
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/geo-replication
-#%ghost %attr(0644,-,-) %{_sharedstatedir}/glusterd/geo-replication/gsyncd_template.conf
-%endif
-# need to copy the upgrade scripts here
-%endif
-%endif
 
-%files fuse
-%defattr(-,root,root,-)
-%if ( 0%{_for_fedora_koji_builds} )
-%config(noreplace) %{_sysconfdir}/logrotate.d/glusterfs-fuse
-%endif
-%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/fuse*
-/sbin/mount.glusterfs
-%if ( 0%{!?_without_fusermount:1} )
-%{_bindir}/fusermount-glusterfs
-%endif
-%if ( 0%{_for_fedora_koji_builds} )
-%if ( 0%{?rhel} && 0%{?rhel} <= 5 )
-%{_sysconfdir}/sysconfig/modules/glusterfs-fuse.modules
-%endif
-%endif
 
-%if 0%{?_build_server}
 %pretrans fuse -p <lua>
 if not posix.access("/bin/bash", "x") then
     -- initial installation, no shell, no running glusterfsd
@@ -973,10 +1252,12 @@ os.remove(tmpname)
 if not (ok == 0) then
    error("Detected running glusterfs processes", ok)
 end
-%endif
 
-%if 0%{?_build_server}
-%pretrans server -p <lua>
+
+
+%if 0%{?_can_georeplicate}
+%if ( 0%{!?_without_georeplication:1} )
+%pretrans geo-replication -p <lua>
 if not posix.access("/bin/bash", "x") then
     -- initial installation, no shell, no running glusterfsd
     return 0
@@ -1005,7 +1286,7 @@ fi
 
 -- rpm in RHEL5 does not have os.tmpname()
 -- io.tmpfile() can not be resolved to a filename to pass to bash :-/
-tmpname = "/tmp/glusterfs-server_pretrans_" .. os.date("%s")
+tmpname = "/tmp/glusterfs-geo-replication_pretrans_" .. os.date("%s")
 tmpfile = io.open(tmpname, "w")
 tmpfile:write(script)
 tmpfile:close()
@@ -1014,107 +1295,12 @@ os.remove(tmpname)
 if not (ok == 0) then
    error("Detected running glusterfs processes", ok)
 end
-
-%pre server
-# Rename old hookscripts in an RPM-standard way.  These aren't actually
-# overwritten in upgrade setup
-if [ -d /var/lib/glusterd/hooks ]; then
-    for file in $(find /var/lib/glusterd/hooks -type f); do
-        if `echo ${file} | grep -q S56glusterd-geo-rep-create-post.sh$`; then
-            continue
-        fi
-        newfile=`echo ${file} | sed s/S/K/1`.rpmsave
-        echo "warning: ${file} saved as ${newfile}"
-        mv ${file} ${newfile}
-    done
-fi
-
-%files server
-%defattr(-,root,root,-)
-%doc extras/clear_xattrs.sh
-%if ( 0%{_for_fedora_koji_builds} )
-%config(noreplace) %{_sysconfdir}/logrotate.d/glusterd
-%endif
-%config(noreplace) %{_sysconfdir}/logrotate.d/glusterfs
-#%config(noreplace) %{_sysconfdir}/logrotate.d/glusterfs-georep
-%config(noreplace) %{_sysconfdir}/sysconfig/glusterd
-%config(noreplace) %{_sysconfdir}/glusterfs
-# Legacy configs
-%if ( 0%{_for_fedora_koji_builds} )
-%config(noreplace) %{_sysconfdir}/logrotate.d/glusterfsd
-%config(noreplace) %{_sysconfdir}/sysconfig/glusterfsd
-%endif
-# init files
-%_init_glusterd
-%if ( 0%{_for_fedora_koji_builds} && 0%{?_with_systemd:1} )
-%_init_glusterfsd
 %endif
-# binaries
-%{_sbindir}/gluster
-%{_sbindir}/glusterd
-%{_sbindir}/glfsheal
-%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/storage*
-%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/posix*
-%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/server*
-%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mgmt*
-%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs*
-%{_sharedstatedir}/glusterd
-%dir %{_sharedstatedir}/glusterd/groups
-%config(noreplace) %{_sharedstatedir}/glusterd/groups/virt
-%config(noreplace) %{_sharedstatedir}/glusterd/groups/small-file-perf
-%if 0%{?_can_georeplicate}
-%if ( 0%{!?_without_georeplication:1} )
-%exclude %{_sharedstatedir}/glusterd/hooks/1/gsync-create/post/S56glusterd-geo-rep-create-post.sh
-%endif
-%endif
-%{_libexecdir}/glusterfs/quota/quota-remove-xattr.sh
-#%config(noreplace) %{_sharedstatedir}/glusterd/glusterd.info
-#%ghost %attr(0644,-,-) %{_sharedstatedir}/glusterd/glusterd.info
-#%ghost %attr(0600,-,-) %{_sharedstatedir}/glusterd/options
-# This is really ugly, but I have no idea how to mark these directories in an
-# other way. They should belong to the glusterfs-server package, but don't
-# exist after installation. They are generated on the first start...
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop/post
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop/pre
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start/post
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start/pre
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/remove-brick
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/remove-brick/post
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/remove-brick/pre
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick/post
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick/pre
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/set
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/set/post
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/set/pre
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/create
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/create/post
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/create/pre
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/delete
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/delete/post
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/delete/pre
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/copy-file
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/copy-file/post
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/copy-file/pre
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/gsync-create
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/gsync-create/post
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/gsync-create/pre
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/glustershd
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/vols
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/peers
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/groups
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/nfs
-#%ghost      %attr(0600,-,-) %{_sharedstatedir}/glusterd/nfs/nfs-server.vol
-#%ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/nfs/run
-#%ghost      %attr(0600,-,-) %{_sharedstatedir}/glusterd/nfs/run/nfs.pid
 %endif
 
-%if 0%{?_build_server}
-%pretrans api -p <lua>
+
+
+%pretrans libs -p <lua>
 if not posix.access("/bin/bash", "x") then
     -- initial installation, no shell, no running glusterfsd
     return 0
@@ -1143,7 +1329,7 @@ fi
 
 -- rpm in RHEL5 does not have os.tmpname()
 -- io.tmpfile() can not be resolved to a filename to pass to bash :-/
-tmpname = "/tmp/glusterfs-api_pretrans_" .. os.date("%s")
+tmpname = "/tmp/glusterfs-libs_pretrans_" .. os.date("%s")
 tmpfile = io.open(tmpname, "w")
 tmpfile:write(script)
 tmpfile:close()
@@ -1152,29 +1338,11 @@ os.remove(tmpname)
 if not (ok == 0) then
    error("Detected running glusterfs processes", ok)
 end
-%endif
-
-%post api
-/sbin/ldconfig
-
-%postun api
-/sbin/ldconfig
-
-%files api
-%exclude %{_libdir}/*.so
-%{_libdir}/libgfapi.*
-%{_libdir}/glusterfs/%{version}/xlator/mount/api*
-%{python_sitelib}/*
 
 
-%if 0%{?_build_server}
-%if ( 0%{!?_without_ocf:1} )
-%files resource-agents
-%defattr(-,root,root)
-# /usr/lib is the standard for OCF, also on x86_64
-%{_prefix}/lib/ocf/resource.d/glusterfs
 
-%pretrans resource-agents -p <lua>
+%if ( 0%{!?_without_rdma:1} )
+%pretrans rdma -p <lua>
 if not posix.access("/bin/bash", "x") then
     -- initial installation, no shell, no running glusterfsd
     return 0
@@ -1203,7 +1371,7 @@ fi
 
 -- rpm in RHEL5 does not have os.tmpname()
 -- io.tmpfile() can not be resolved to a filename to pass to bash :-/
-tmpname = "/tmp/glusterfs-resource-agents_pretrans_" .. os.date("%s")
+tmpname = "/tmp/glusterfs-rdma_pretrans_" .. os.date("%s")
 tmpfile = io.open(tmpname, "w")
 tmpfile:write(script)
 tmpfile:close()
@@ -1212,21 +1380,12 @@ os.remove(tmpname)
 if not (ok == 0) then
    error("Detected running glusterfs processes", ok)
 end
-
-%endif
 %endif
 
-%files devel
-%defattr(-,root,root,-)
-%{_includedir}/glusterfs
-%{_libdir}/pkgconfig/libgfchangelog.pc
-%exclude %{_includedir}/glusterfs/y.tab.h
-%exclude %{_includedir}/glusterfs/api
-%exclude %{_libdir}/libgfapi.so
-%{_libdir}/*.so
 
-%if 0%{?_build_server}
-%pretrans devel -p <lua>
+
+%if ( 0%{!?_without_ocf:1} )
+%pretrans resource-agents -p <lua>
 if not posix.access("/bin/bash", "x") then
     -- initial installation, no shell, no running glusterfsd
     return 0
@@ -1255,7 +1414,7 @@ fi
 
 -- rpm in RHEL5 does not have os.tmpname()
 -- io.tmpfile() can not be resolved to a filename to pass to bash :-/
-tmpname = "/tmp/glusterfs-devel_pretrans_" .. os.date("%s")
+tmpname = "/tmp/glusterfs-resource-agents_pretrans_" .. os.date("%s")
 tmpfile = io.open(tmpname, "w")
 tmpfile:write(script)
 tmpfile:close()
@@ -1266,13 +1425,9 @@ if not (ok == 0) then
 end
 %endif
 
-%files api-devel
-%{_libdir}/pkgconfig/glusterfs-api.pc
-%{_libdir}/libgfapi.so
-%{_includedir}/glusterfs/api/*
 
-%if 0%{?_build_server}
-%pretrans api-devel -p <lua>
+
+%pretrans server -p <lua>
 if not posix.access("/bin/bash", "x") then
     -- initial installation, no shell, no running glusterfsd
     return 0
@@ -1301,7 +1456,7 @@ fi
 
 -- rpm in RHEL5 does not have os.tmpname()
 -- io.tmpfile() can not be resolved to a filename to pass to bash :-/
-tmpname = "/tmp/glusterfs-api-devel_pretrans_" .. os.date("%s")
+tmpname = "/tmp/glusterfs-server_pretrans_" .. os.date("%s")
 tmpfile = io.open(tmpname, "w")
 tmpfile:write(script)
 tmpfile:close()
@@ -1312,364 +1467,112 @@ if not (ok == 0) then
 end
 %endif
 
-%if 0%{?_build_server}
-%post server
-# Legacy server
-#%_init_enable glusterd
-#%_init_enable glusterfsd
-/sbin/chkconfig --add glusterd
-/sbin/chkconfig glusterd on
+%changelog
+* Thu Oct 09 2014 Bala FA <barumuga@redhat.com> - v3.6.0.29-2
+- build to make higher release with rh-common-rhel-7 to avoid build
+  collision
 
-# Genuine Fedora (and EPEL) builds never put gluster files in /etc; if
-# there are any files in /etc from a prior gluster.org install, move them
-# to /var/lib. (N.B. Starting with 3.3.0 all gluster files are in /var/lib
-# in gluster.org RPMs.) Be careful to copy them on the off chance that
-# /etc and /var/lib are on separate file systems
-if [ -d /etc/glusterd -a ! -h /var/lib/glusterd ]; then
-    %{__mkdir_p} /var/lib/glusterd
-    cp -a /etc/glusterd /var/lib/glusterd
-    rm -rf /etc/glusterd
-    ln -sf /var/lib/glusterd /etc/glusterd
-fi
+* Fri Sep 19 2014 Bala FA <barumuga@redhat.com> - v3.6.0.29-1
+- fixes bugs bz#1136711 bz#1138288 bz#1139213 bz#1139273 bz#1139473 
+  bz#1140643 bz#1143960
 
-# Rename old volfiles in an RPM-standard way.  These aren't actually
-# considered package config files, so %config doesn't work for them.
-if [ -d /var/lib/glusterd/vols ]; then
-    for file in $(find /var/lib/glusterd/vols -name '*.vol'); do
-        newfile=${file}.rpmsave
-        echo "warning: ${file} saved as ${newfile}"
-        cp ${file} ${newfile}
-    done
-fi
+* Wed Sep 03 2014 Bala FA <barumuga@redhat.com> - v3.6.0.28-1
+- fixes bugs bz#1110694 bz#1116150 bz#1121099 bz#1124692 bz#1127234 
+  bz#1136711 bz#921528 bz#969298
 
-# add marker translator
-# but first make certain that there are no old libs around to bite us
-# BZ 834847
-if [ -e /etc/ld.so.conf.d/glusterfs.conf ]; then
-    rm -f /etc/ld.so.conf.d/glusterfs.conf
-    /sbin/ldconfig
-fi
-pidof -c -o %PPID -x glusterd &> /dev/null
-if [ $? -eq 0 ]; then
-    kill -9 `pgrep -f gsyncd.py` &> /dev/null
+* Mon Aug 04 2014 Bala FA <barumuga@redhat.com> - v3.6.0.27-1
+- fixes bugs bz#1048930 bz#1108588 bz#1123305 bz#1124583 bz#1125818
 
-    killall glusterd &> /dev/null
-    glusterd --xlator-option *.upgrade=on -N
-    glusterd
-else
-    glusterd --xlator-option *.upgrade=on -N
-fi
+* Thu Jul 31 2014 Bala FA <barumuga@redhat.com> - v3.6.0.26-1
+- fixes bugs bz#1111029 bz#1111577 bz#1113852 bz#1116761 bz#1117135 
+  bz#1117283 bz#1119223 bz#1120830 bz#1121059 bz#1121603
 
+* Tue Jul 22 2014 Bala FA <barumuga@redhat.com> - v3.6.0.25-1
+- fixes bugs bz#1007033 bz#1101910 bz#1104121 bz#1104921 bz#1109150 
+  bz#1116376 bz#1116703 bz#1116992 bz#1117135 bz#1120198 bz#1120245 bz#BUG:
 
-%preun server
-if [ $1 -eq 0 ]; then
-    if [ -f %_init_glusterfsd ]; then
-        %_init_stop glusterfsd
-    fi
-    %_init_stop glusterd
-    if [ -f %_init_glusterfsd ]; then
-        %_init_disable glusterfsd
-    fi
-    %_init_disable glusterd
-fi
-if [ $1 -ge 1 ]; then
-    if [ -f %_init_glusterfsd ]; then
-        %_init_restart glusterfsd
-    fi
-    %_init_restart glusterd
-fi
-%endif
+* Thu Jul 03 2014 Bala FA <barumuga@redhat.com> - v3.6.0.24-1
+- fixes bugs bz#1104153 bz#1109149 bz#1112582 bz#1113961 bz#1114008 
+  bz#1114592 bz#1115266 bz#1115267
 
-%changelog
-* Fri Jun 27 2014 Johnny Hughes <johnny@centos.org> - 3.4.0.59rhs-1.el7.centos
-- Change vendor and packager for branding
-
-* Tue Feb 04 2014 Ravishankar N <ranaraya@redhat.com> - 3.4.0.59rhs-1
-- fixes bugs in cli, dht, glusterd, afr
-  1059237, 1054782, 1059662, 1056204,1057291
-
-* Tue Jan 28 2014 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.58rhs-2
-- fix /sbin usage properly
-
-* Sat Jan 25 2014 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.58rhs-1
-- fixes bugs 977492 1026787 829734 1056204
-
-* Mon Jan 13 2014 Ravishankar N <ranaraya@redhat.com> - 3.4.0.57rhs-1
-- fixes bugs 1046022, 1044923
-
-* Sat Jan 11 2014 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.56rhs-1
-- fixes bug 1038908 1034479
-
-* Mon Jan 06 2014 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.55rhs-1
-- fixes bug 1047782
-
-* Sun Jan 05 2014 Ravishankar N <ranaraya@redhat.com> - 3.4.0.54rhs-1
-- fixes bugs in afr, glusterd, gNFS, io-cache.
-  1047862, 1047461, 1047747, 1047782, 1047449
-
-* Mon Dec 30 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.53rhs-1
-- fixes bug 916857 1005663 1032034 1046294 1046318 1042830 1045313
-  1046571 1046604 1045991 1022822 1031687 1045374 972021
-
-* Fri Dec 27 2013 Daniel Mach <dmach@redhat.com> - 3.4.0.52rhs-2
-- Mass rebuild 2013-12-27
-
-* Thu Dec 19 2013 Ravishankar N<ranaraya@redhat.com> - 3.4.0.52rhs-1
-- fixes bugs in guota, gNFS, glusterd, afr etc.
-  1024371, 1024316, 1021776, 1043535, 1019908, 965400, 1020816
-
-* Wed Dec 18 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.51rhs-1
-- fixes bug 1027128 1031687 1043946 829734 906747 967071
-
-* Mon Dec 16 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.50rhs-1
-- fixes bug 1027699 1039992 1024725 1022822 1040211 989362 1034479
-  1037515 1021776
-
-* Wed Dec 11 2013 Ravishankar N <ranaraya@redhat.com> - 3.4.0.49rhs-1
-- This build has fixes for bugs in cli, glusterd, fuse, dht etc.
-  1023950, 1032081, 923809, 1028995, 1023921, 1037851, 956655, 1015630, 1010975,
-
-* Thu Dec 05 2013 Ravishankar N <ranaraya@redhat.com> - 3.4.0.47.1u2rhs-1
-- This build has fixes for bugs in glusterd, gNFS, dht, afr, gfapi, fuse,
-  cli, gsyncd etc.
-  1035519, 1028325, 1034547, 1037274, 1034238, 1027727, 1030443, 1024316,
-  1028282, 1032359, 1030021, 1020995, 979861, 1032558, 929036, 1033469,
-  916857
-
-* Mon Nov 25 2013 Ravishankar N <ranaraya@redhat.com> - 3.4.0.44.1u2rhs-1
-- This build has fixes for bugs in dht, gfapi, cli, glusterd, gsyncd, gNFS,
-  afr, geo-rep, quota etc.
-  1024228, 1021857, 1022328, 1020850, 1004794, 1019846, 1019846, 929036,
-  1032465, 1032984, 990330, 990331, 999569, 999569, 928784, 1011313, 1029575,
-  1029577, 987292, 1028675, 1028732, 1000948, 1025967, 1028343, 1028299,
-  1019522, 1019522, 1019522, 1019522, 1025358, 987292, 850514, 1027525, 1025392,
-  987272, 1000948, 1025392, 1025953, 1025967, 1025953, 1025954, 1025956, 1002987,
-  1025476, 1014002, 1025408, 987292, 1022830, 1019930, 1023124, 980910, 980910
-  1023124, 1023124, 1019954, 1010239, 924048, 1027364
-
-* Tue Nov 12 2013 Ravishankar N <ranaraya@redhat.com> - 3.4.0.43.1u2rhs-1
-- This build has fixes for bugs in dht, posix, gfapi, glusterd, and libglusterfs.
-  1025471, 1007033, 1025205, 1025240, 1027559
-
-* Mon Nov 11 2013 Krishnan Parthasarathi <kparthas@redhat.com> - 3.4.0.42.1u2rhs-1
-- This build has fixes for bugs in glusterd, geo-replication, quota, glusterfs-nfs etc
-  1000903, 1001895, 1002885, 1007536, 1012216, 1012900, 1016019, 1016385,
-  1016478, 1016608, 1017014, 1017466, 1017993, 1019504, 1019518, 1019903,
-  1020181, 1020331, 1020886, 1021808, 1022518, 1022582, 1022830, 1024496,
-  1025163, 1025333, 1025604, 864867, 871015, 888752, 977492, 977544, 998786,
-  998793, 998943
-
-* Mon Oct 21 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.35.1u2rhs-1
-- bug fixes 1016608 858434 864868 1001895 1019064 1019683 1006354
-  1012900 980910 1001556 956693 923135 904300 969461 1000948 1000936
-  1011694
-* Thu Oct 10 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.34.1u2rhs-1
-- bug fixes 1016971 1013556 1016993
-* Mon Oct 07 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.34rhs-1
-- bug fixes for 852140 950314 980778 998832 998914 998943 1000922
-  1000996 1001893 1001895 1002022 1002613 1003580 1005460 1005478
-  1005553 1006172 1007866 1008173 1009851 1011694 1011905
-* Mon Oct 07 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.33rhs-2
-- fix build issue in rhel 7.0 to include gluster rsyslog config files
-  in glusterfs.rpm
-* Sun Sep 08 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.33rhs-1
-- fix for gfid mismatches in distribute when parallel 'mkdir()' is done
-* Fri Sep 06 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.32rhs-1
-- fixes to hardened build to pass execstack check in rpmdiff
-- fix the compatibility issue with older servers (bz#999944)
-* Thu Sep 05 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.31rhs-1
-- fixes to geo-replication upgrade script to handle symlink (bz#1001089)
-- fixes to glusterd to handle op-version properly to allow 'volume set' to
-  happen even in older clients connected case (bz#1002871)
-- fixes in geo-replication to handle hardlink migration properly (bz#1001498)
-* Fri Aug 30 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.30rhs-2
-- skip S56glusterd-geo-rep-create-post.sh in rename
-* Fri Aug 30 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.30rhs-1
-- remove rsyslog-mmcount than disabling syslog
-- fixes few quota bugs
-* Fri Aug 30 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.29rhs-1
-- fix for smb crashes (bz#1000545 && bz#1001614)
-- fix the hook script upgrade issues (bz#1002603)
-* Thu Aug 29 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.28rhs-1
-- fix for afr's wrong internal flag setting in case of a brick down (bz#1002069)
-* Thu Aug 29 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.27rhs-1
-- fix the glusterd crash (bz#990125)
-- fix the hang seen in case of rebalance/self-heal with RHOS setup (bz#999528)
-* Thu Aug 29 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.26rhs-1
-- Build with the quota feature rework
-* Thu Aug 29 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.25rhs-1
-- fixes a issue with peer probe of newer servers after upgrade (bz#1000986)
-- fixes NFS file handle sizes issue with older clients (bz#902857)
-- geo-replication's session distribution is now more deterministic (bz#980049)
-* Tue Aug 27 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.24rhs-1
-- resolves rhbz#1000957 rhbz#999939 rhbz#994351 rhbz#988900 rhbz#999825 rhbz#1000396
-* Mon Aug 26 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.23rhs-1
-- resolves rhbz#982471, rhbz#902857, rhbz#993891, rhbz#999921, rhbz#999921
-* Fri Aug 23 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.22rhs-2
-- disable syslog temporarily till rsyslog is included in rhs channel
-* Thu Aug 22 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.22rhs-1
-- updated glusterfs.spec from the source repository.
-- fixes the bugs: 893960 984921 987082 990125 991021 996083 996987 996999 998416
-* Tue Aug 20 2013 Balamurugan Arumugam <barumuga@redhat.com> - 3.4.0.21rhs-1
-- resolves rhbz#928784
-* Wed Aug 14 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.20rhs-2
-- fixed the path of 'chmod' in geo-replication 'post' section
-* Wed Aug 14 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.20rhs-1
-- fixed an issue with geo-rep create (bz996961)
-- fixed an build issue in RHEL5 (in the source)
-* Wed Aug 14 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.19rhs-2
-- fixed 'Installed (but unpackaged) file(s) found' for non-server builds
-* Tue Aug 13 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.19rhs-1
-- resolves bugs (921385 923555 960046 980529 983507 989906 990125 994956 996312 996431)
-* Wed Aug  7 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.18rhs-1
-- resolves rhbz#988852, rhbz#989192, rhbz#989435, rhbz#990084, rhbz#992959, rhbz#993583, rhbz#993713
-* Tue Aug  6 2013 Vijay Bellur <vbellur@redhat.com> - 3.4.0.17rhs-1
-- Enables orthogonal-meta-data option in afr by default.
-* Tue Aug  6 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.16rhs-1
-- resolves rhbz#993270
-* Tue Aug  6 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.15rhs-6
-- remove /usr/lib/ocf/resource.d/glusterfs for client builds
-* Tue Aug  6 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.15rhs-5
-- set correct dependencies between glusterfs subpackages
-* Mon Aug  5 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.15rhs-4
-- remove /usr/bin/fusermount dependency for fuse
-* Mon Aug  5 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.15rhs-3
-- make geo-replication as dependency to server
-* Mon Aug  5 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.15rhs-2
-- rpm restructuring done
-* Mon Aug 05 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.15rhs_1
-- fixes for bugs (858492 924572 957685 958199 960938 968879 969372
-  975343 980529 981158 981318 981612 983950 985236 988852 988914
-  989248 989465 989906 990060 990368 990510 990548 990562 990958 990961)
-* Tue Jul 30 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.14rhs-1
-- resolves rhbz#989689
-* Sun Jul 28 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.13rhs
-- rebase of the branch back to 'rhs-2.1'
-- 'gluster volume set <VOL> group small-file-perf' is added
-- fixes an issue with init.d/glusterd output not right (bz958708)
-* Wed Jul 24 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.12rhs.beta6
-- fixes to few bugs in quota (multivolume support, etc)
-- geo-rep xsync missing few files, now fixed
-- patches for bzs: (850514 852294 928784 956494 975754 981553 981661 982184
-  983040 984414 984942 985380 985384 985388 985752 986158 986162 986885
-  986929 987126 987432)
-
-* Thu Jul 18 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.12rhs.beta5_2
-- fix a build warning, which caused failure of glusterd processes starting.
-* Thu Jul 18 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.12rhs.beta5
-- fixes for bugs 852578 956494 970686 974913 976292 976755 982181 983476
-  983544 983966 984447.
-* Fri Jul 12 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.12rhs.beta4
-- more fixes to geo-rep and quota
-- other bug fixes include (918510 920870 924048 952420 956494 956619 
-  962621 980723 980725 981653 981949 982078 982479)
-* Sat Jul 06 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.12rhs.beta3
-- brick process crashes in debug mode during volume set/quota limit set
-- fix issues with geo-replication syncing if data existed already.
-- geo-replication entry creation when done in parallel
-* Thu Jul 04 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.12rhs.beta2
-- couple of minor fixes in geo-rep
-- fixed the quota reconfigure issue (now restarts quotad to make
-  sure the list is properly processed
-- other bug fixes in base (bz919209 bz961608 bz969461 bz974055 bz974393
-  bz974475 bz975343 bz980117 bz980348 bz980468 bz980518 bz980722 bz980798)
-* Fri Jun 28 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.12rhs.beta1
-- added one of the geo-replication hook file in install path
-- fixed code in changelog to pass the rhel5 build
-* Thu Jun 27 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.12rhs.beta0
-- added distributed-geo-rep feature
-- added server side quota feature
-* Mon Jun 24 2013 Arumugam Balamurugan <barumuga@redhat.com> - 3.4.0.12rhs
-- fixes rhbz#924572 rhbz#955948 rhbz#956034 rhbz#962286 rhbz#972653
-- rhbz#975343
-* Tue Jun 18 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.11rhs
-- gfapi patches for support vfs_glusterfs for samba are merged
-* Tue Jun 18 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.10rhs
-- fixes to bugs 959208 959869 961250 962510 964020 964054 968289 974913
-* Wed Jun 05 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.9rhs
-- fix lockfile issue with init.d file
-- clients not having /var/run/gluster directory for statedump (bz917544)
-- other bugs from source tarball (bz923466 bz924572 bz956188 bz958076 bz959201 bz959907 bz960390 bz960834 bz960835 bz961271 bz962345 bz962400 bz963122 bz963534 bz963896 bz964020 bz965440 bz967483)
-* Tue May 14 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.8rhs
-- fix glusterd.info file re-writing issue (bz962343 & bz961703)
-- fix port reconnect issues at socket layer (bz960586)
-- add glusterd in chkconfig
-* Mon May 13 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.7rhs
-- fix a memory corruption issue with RPC layer (bz961198)
-- fix in distribute migration check code (bz960843)
-* Fri May 10 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.6rhs
-- fix a missing hooks issue (bz960982)
-* Thu May 09 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.5rhs
-- fix issue with server package installation
-- root-squash fixes
-- reverted few replicate patches
-* Tue May 07 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.4rhs
-- fixed hook scripts
-- nfs crash fix
-- couple glusterd crashes fixed (syncop lock related fixes)
-- dht rebalance crash fix
-- quorum restart logic fixes
-* Fri May 03 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.3rhs
-- fixed issues 'virt' group file, and multiple option handling
-- fixed couple of crashes with glusterd
-* Thu May 02 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.2rhs
-- rebase to upstream/master branch
-  (commit: b6e10801bee030fe7fcd1ec3bfac947ce44d023d)
-- added 'virt' group file.
-* Tue Apr 09 2013 Amar Tumballi <atumball@redhat.com> - 3.4.0.1rhs
-- rebase to upstream/release-3.4 branch
-* Mon Feb 18 2013 Raghavendra Bhat <rabhat@redhat.com> - 3.4.0qa8
-- quick-read refactor
-- integrate trace and event-history
-- performance/md-cache: make readdirp configurable
-- io-stats: handle open failures gracefully
-- object-storage: use temp file optimization
-* Thu Jan 17 2013 Vijay Bellur <vbellur@redhat.com> - 3.4.0.qa6
-- Added packaging for resource-agents
-* Fri Jan 11 2013 Vijay Bellur <vbellur@redhat.com> - 3.4.0.qa6
-- Upstream rebase #4 for 2.1
-* Mon Dec 17 2012 Vijay Bellur <vbellur@redhat.com> - 3.4.0.qa5
-- Upstream rebase #3 for 2.1
-* Wed Dec 05 2012 Vijay Bellur <vbellur@redhat.com> - 3.4.0.qa4
-- Upstream rebase #2 for 2.1
-* Thu Nov 01 2012 Vijay Bellur <vbellur@redhat.com> - 3.4.0.1rhs
-- 2.1 rebase
-* Wed Oct 10 2012 Amar Tumballi <atumball@redhat.com> - 3.3.0.3rhs-33
-- valid hostname fix (bz863908)
-- smb.conf init script issues (bz863907)
-- geo-replication: rsync number of argument (bz859173)
-* Mon Oct 01 2012 Amar Tumballi <atumball@redhat.com> - 3.3.0.3rhs-32
-- bug fixes in quorum support
-* Fri Sep 28 2012 Amar Tumballi <atumball@redhat.com> - 3.3.0.3rhs-31
-- server side quorum support added
-* Tue Sep 11 2012 Amar Tumballi <atumball@redhat.com> - 3.3.0.2rhs-29
-- changing the upstream tarball version (no code difference from -28)
-* Mon Sep 10 2012 Amar Tumballi <atumball@redhat.com> - 3.3.0-28
-- glusterd: Fix a crash when volume status is issued
-* Fri Sep 07 2012 Vijay Bellur <vbellur@redhat.com> - 3.3.0-27
-- Improvements in GlusterFS statedump infrastructure
-- glusterd, glusterfsd: Fix a crash when rpc submission fails
-* Fri Aug 17 2012 Vijay Bellur <vbellur@redhat.com> - 3.3.0-26
-- Updated to gluster 3.3.0-26 build
-* Wed Jul 25 2012 Vijay Bellur <vbellur@redhat.com> - 3.3.0-25
-- Updated to gluster 3.3.0-25 build
-* Tue Jul 24 2012 Vijay Bellur <vbellur@redhat.com> - 3.3.0-24
-- Updated to gluster 3.3.0-24 build
-* Thu Jul 19 2012 Vijay Bellur <vbellur@redhat.com> - 3.3.0-23
-- Updated to gluster 3.3.0-23 build
-* Tue Jun 19 2012 Vijay Bellur <vbellur@redhat.com> - 3.3.0-22
-- Updated to gluster 3.3.0-22 build
-* Fri Jun 15 2012 Anthony Towns <atowns@redhat.com> - 3.3.0-21
-- Allow building only native client packages.
-* Thu Jun 14 2012 Vijay Bellur <vbellur@redhat.com> - 3.3.0-20
-- Updated to gluster 3.3.0 build
-* Wed May 30 2012 Vijay Bellur <vbellur@redhat.com> - 3.3.0qa45-1
-- Updated to gluster 3.3 qa45 build
-* Tue May 29 2012 Vijay Bellur <vbellur@redhat.com> - 3.3.0qa44-1
-- Updated to gluster 3.3 qa44 build
-* Wed May 23 2012 Vijay Bellur <vbellur@redhat.com> - 3.3.0qa43-1
-- Updated to gluster 3.3 qa43 build
-* Wed May 16 2012 Vijay Bellur <vbellur@redhat.com> - 3.3.0qa41-1
-- Updated to gluster 3.3 qa41 build
-* Tue May 08 2012 Anthony Towns <atowns@redhat.com> - 3.3.0qa40-1
-- Updated to gluster 3.3 qa40 build
+* Wed Jun 25 2014 Bala FA <barumuga@redhat.com> - v3.6.0.23-1
+- fixes bugs bz#1111148 bz#1111612
+
+* Mon Jun 23 2014 Bala FA <barumuga@redhat.com> - v3.6.0.22-1
+- fixes bugs bz#1006809 bz#1111122
+
+* Fri Jun 20 2014 Bala FA <barumuga@redhat.com> - v3.6.0.21-1
+- fixes bugs bz#1101407 bz#1103155 bz#1110211 bz#1110224 bz#1110252 bz#1111468
+
+* Thu Jun 19 2014 Bala FA <barumuga@redhat.com> - v3.6.0.20-1
+- fixes bugs bz#1030309 bz#1082951 bz#1103644
+
+* Wed Jun 18 2014 Bala FA <barumuga@redhat.com> - v3.6.0.19-1
+- fixes bugs bz#1030309 bz#1088231 bz#1090986 bz#1094681 bz#1095314 
+  bz#1098971 bz#1108018 bz#1108505 bz#1108570 bz#1109149
+
+* Mon Jun 16 2014 Bala FA <barumuga@redhat.com> - v3.6.0.18-1
+- fixes bugs bz#1006729 bz#1064597 bz#1066389 bz#1082951 bz#1098971 
+  bz#1102550 bz#1103688 bz#1105323 bz#1107665 bz#1107961 bz#1108018 bz#1109141
+
+* Fri Jun 13 2014 Bala FA <barumuga@redhat.com> - v3.6.0.17-1
+- fixes bugs bz#1082951 bz#1086145 bz#1097102 bz#1100211 bz#1103680 
+  bz#1104159 bz#1104574 bz#1104635 bz#1105102 bz#1107523 bz#1108652
+
+* Wed Jun 11 2014 Bala FA <barumuga@redhat.com> - v3.6.0.16-1
+- fixes bugs bz#1096565 bz#1096614 bz#1097512 bz#1098087 bz#1099385 
+  bz#1101407 bz#1101514 bz#1101961 bz#1104602 bz#1105444
+
+* Mon Jun 09 2014 Bala FA <barumuga@redhat.com> - v3.6.0.15-1
+- fixes bugs bz#1096729 bz#1102747
+
+* Sat Jun 07 2014 Bala FA <barumuga@redhat.com> - v3.6.0.14-1
+- fixes bugs bz#1094716 bz#1101525
+
+* Thu Jun 05 2014 Bala FA <barumuga@redhat.com> - v3.6.0.13-1
+- fixes bugs bz#1046908 bz#1082043 bz#1094832 bz#1095267 bz#1096139 
+  bz#1098196 bz#1100282 bz#1104016 bz#1104486
+
+* Tue Jun 03 2014 Bala FA <barumuga@redhat.com> - v3.6.0.12-1
+- fixes bugs bz#1099079 bz#1101588 bz#1103576 bz#921528 bz#970813
+
+* Fri May 30 2014 Bala FA <barumuga@redhat.com> - v3.6.0.11-1
+- fixes bugs bz#1043566 bz#1080245
+
+* Thu May 29 2014 Bala FA <barumuga@redhat.com> - v3.6.0.10-1
+- fixes bugs bz#1102053
+
+* Tue May 27 2014 Bala FA <barumuga@redhat.com> - v3.6.0.9-1
+- fixes bugs bz#1098862 bz#1099833
+
+* Mon May 26 2014 Bala FA <barumuga@redhat.com> - v3.6.0.8-1
+- fixes bugs bz#1098053
+
+* Fri May 23 2014 Bala FA <barumuga@redhat.com> - v3.6.0.7-1
+- fixes bugs bz#1098691
+
+* Thu May 22 2014 Bala FA <barumuga@redhat.com> - v3.6.0.6-1
+- fixes bugs bz#1097782 bz#1099010 bz#989480
+
+* Tue May 20 2014 Bala FA <barumuga@redhat.com> - v3.6.0.5-1
+- fixes bugs bz#1096729
+
+* Mon May 19 2014 Bala FA <barumuga@redhat.com> - v3.6.0.4-1
+- fixes bugs bz#1095190 bz#1096565 bz#1097679 bz#1098069 bz#1098070
+
+* Sat May 17 2014 Bala FA <barumuga@redhat.com> - v3.6.0.3-1
+- fixes bugs bz#1094681
+
+* Thu May 15 2014 Bala FA <barumuga@redhat.com> - v3.6.0.2-1
+- fixes bugs bz#1061580 bz#1077452 bz#1091961 bz#1093602 bz#1096616 
+  bz#1096700 bz#1097224 bz#1098020 bz#1098053
+
+* Wed May 14 2014 Sreenath G <sgirijan@redhat.com> - v3.6.0.1-1
+- fixes bugs bz#1062158 bz#1097565 bz#1097581 bz#1097603
+
+* Tue May 13 2014 Bala.FA <barumuga@redhat.com> - v3.6.0.0-1
+- Initial build fixes bugs bz#1032894, bz#1039544, bz#1040351,
+  bz#1046853, bz#1047782, bz#1053579, bz#1061685, bz#1074947,
+  bz#1078061, bz#1080970, bz#1089172, bz#1091926, bz#1091934,
+  bz#1092841, bz#1093602, bz#1094708, bz#1095097, bz#1095585,
+  bz#1096026, bz#874554, bz#959986