7f4c2a
%global _hardened_build 1
7f4c2a
7f4c2a
%global _for_fedora_koji_builds 0
7f4c2a
7f4c2a
# uncomment and add '%' to use the prereltag for pre-releases
7f4c2a
# %%global prereltag qa3
7f4c2a
7f4c2a
##-----------------------------------------------------------------------------
7f4c2a
## All argument definitions should be placed here and keep them sorted
7f4c2a
##
7f4c2a
7f4c2a
# if you wish to compile an rpm with cmocka unit testing...
7f4c2a
# rpmbuild -ta glusterfs-3.7.1.tar.gz --with cmocka
7f4c2a
%{?_with_cmocka:%global _with_cmocka --enable-cmocka}
7f4c2a
7f4c2a
# if you wish to compile an rpm without rdma support, compile like this...
7f4c2a
# rpmbuild -ta glusterfs-3.7.1.tar.gz --without rdma
7f4c2a
%{?_without_rdma:%global _without_rdma --disable-ibverbs}
7f4c2a
7f4c2a
# No RDMA Support on s390(x)
7f4c2a
%ifarch s390 s390x
7f4c2a
%global _without_rdma --disable-ibverbs
7f4c2a
%endif
7f4c2a
7f4c2a
# if you wish to compile an rpm without epoll...
7f4c2a
# rpmbuild -ta glusterfs-3.7.1.tar.gz --without epoll
7f4c2a
%{?_without_epoll:%global _without_epoll --disable-epoll}
7f4c2a
7f4c2a
# if you wish to compile an rpm without fusermount...
7f4c2a
# rpmbuild -ta glusterfs-3.7.1.tar.gz --without fusermount
7f4c2a
%{?_without_fusermount:%global _without_fusermount --disable-fusermount}
7f4c2a
7f4c2a
# if you wish to compile an rpm without geo-replication support, compile like this...
7f4c2a
# rpmbuild -ta glusterfs-3.7.1.tar.gz --without georeplication
7f4c2a
%{?_without_georeplication:%global _without_georeplication --disable-georeplication}
7f4c2a
7f4c2a
# Disable geo-replication on EL5, as its default Python is too old
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} < 6 )
7f4c2a
%global _without_georeplication --disable-georeplication
7f4c2a
%endif
7f4c2a
7f4c2a
# if you wish to compile an rpm without the OCF resource agents...
7f4c2a
# rpmbuild -ta glusterfs-3.7.1.tar.gz --without ocf
7f4c2a
%{?_without_ocf:%global _without_ocf --without-ocf}
7f4c2a
7f4c2a
# if you wish to build rpms without syslog logging, compile like this
7f4c2a
# rpmbuild -ta glusterfs-3.7.1.tar.gz --without syslog
7f4c2a
%{?_without_syslog:%global _without_syslog --disable-syslog}
7f4c2a
7f4c2a
# disable syslog forcefully as rhel <= 6 doesn't have rsyslog or rsyslog-mmcount
7f4c2a
# Fedora deprecated syslog, see 
7f4c2a
#  https://fedoraproject.org/wiki/Changes/NoDefaultSyslog
7f4c2a
# (And what about RHEL7?)
7f4c2a
%global _without_syslog --disable-syslog
7f4c2a
7f4c2a
# if you wish to compile an rpm without the BD map support...
7f4c2a
# rpmbuild -ta glusterfs-3.7.1.tar.gz --without bd
7f4c2a
%{?_without_bd:%global _without_bd --disable-bd-xlator}
7f4c2a
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} < 6 || 0%{?sles_version} )
7f4c2a
%define _without_bd --disable-bd-xlator
7f4c2a
%endif
7f4c2a
7f4c2a
# if you wish to compile an rpm without the qemu-block support...
7f4c2a
# rpmbuild -ta glusterfs-3.7.1.tar.gz --without qemu-block
7f4c2a
%{?_without_qemu_block:%global _without_qemu_block --disable-qemu-block}
7f4c2a
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} < 6 )
7f4c2a
# xlators/features/qemu-block fails to build on RHEL5, disable it
7f4c2a
%define _without_qemu_block --disable-qemu-block
7f4c2a
%endif
7f4c2a
7f4c2a
# if you wish not to build server rpms, compile like this.
7f4c2a
# rpmbuild -ta glusterfs-3.7.1.tar.gz --without server
7f4c2a
7f4c2a
%global _build_server 1
7f4c2a
%if "%{?_without_server}"
7f4c2a
%global _build_server 0
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( "%{?dist}" == ".el6rhs" ) || ( "%{?dist}" == ".el7rhs" ) || ( "%{?dist}" == ".el7rhgs" )
7f4c2a
%global _build_server 1
7f4c2a
%else
7f4c2a
%global _build_server 0
7f4c2a
%global _without_georeplication --disable-georeplication
7f4c2a
%endif
7f4c2a
7f4c2a
%global _without_extra_xlators 1
7f4c2a
%global _without_regression_tests 1
7f4c2a
7f4c2a
# Disable data-tiering on EL5, sqlite is too old
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} < 6 )
7f4c2a
%global _without_tiering --disable-tiering
7f4c2a
%endif
7f4c2a
7f4c2a
##-----------------------------------------------------------------------------
7f4c2a
## All %global definitions should be placed here and keep them sorted
7f4c2a
##
7f4c2a
7f4c2a
%if ( 0%{?fedora} && 0%{?fedora} > 16 ) || ( 0%{?rhel} && 0%{?rhel} > 6 )
7f4c2a
%global _with_systemd true
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 7 )
7f4c2a
%global _with_firewalld --enable-firewalld
7f4c2a
%endif
7f4c2a
7f4c2a
%if 0%{?_tmpfilesdir:1}
7f4c2a
%define _with_tmpfilesdir --with-tmpfilesdir=%{_tmpfilesdir}
7f4c2a
%else
7f4c2a
%define _with_tmpfilesdir --without-tmpfilesdir
7f4c2a
%endif
7f4c2a
7f4c2a
# there is no systemtap support! Perhaps some day there will be
7f4c2a
%global _without_systemtap --enable-systemtap=no
7f4c2a
7f4c2a
# From https://fedoraproject.org/wiki/Packaging:Python#Macros
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} <= 5 )
7f4c2a
%{!?python_sitelib: %global python_sitelib %(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
7f4c2a
%{!?python_sitearch: %global python_sitearch %(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{?_with_systemd:1} )
7f4c2a
%define _init_enable()  /bin/systemctl enable %1.service ;
7f4c2a
%define _init_disable() /bin/systemctl disable %1.service ;
7f4c2a
%define _init_restart() /bin/systemctl try-restart %1.service ;
7f4c2a
%define _init_start()   /bin/systemctl start %1.service ;
7f4c2a
%define _init_stop()    /bin/systemctl stop %1.service ;
7f4c2a
%define _init_install() install -D -p -m 0644 %1 %{buildroot}%{_unitdir}/%2.service ;
7f4c2a
# can't seem to make a generic macro that works
7f4c2a
%define _init_glusterd   %{_unitdir}/glusterd.service
7f4c2a
%define _init_glusterfsd %{_unitdir}/glusterfsd.service
7f4c2a
%else
7f4c2a
%define _init_enable()  /sbin/chkconfig --add %1 ;
7f4c2a
%define _init_disable() /sbin/chkconfig --del %1 ;
7f4c2a
%define _init_restart() /sbin/service %1 condrestart &>/dev/null ;
7f4c2a
%define _init_start()   /sbin/service %1 start &>/dev/null ;
7f4c2a
%define _init_stop()    /sbin/service %1 stop &>/dev/null ;
7f4c2a
%define _init_install() install -D -p -m 0755 %1 %{buildroot}%{_sysconfdir}/init.d/%2 ;
7f4c2a
# can't seem to make a generic macro that works
7f4c2a
%define _init_glusterd   %{_sysconfdir}/init.d/glusterd
7f4c2a
%define _init_glusterfsd %{_sysconfdir}/init.d/glusterfsd
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{_for_fedora_koji_builds} )
7f4c2a
%if ( 0%{?_with_systemd:1} )
7f4c2a
%global glusterfsd_service glusterfsd.service
7f4c2a
%else
7f4c2a
%global glusterfsd_service glusterfsd.init
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
7f4c2a
%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}}
7f4c2a
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} < 6 )
7f4c2a
   # _sharedstatedir is not provided by RHEL5
7f4c2a
   %define _sharedstatedir /var/lib
7f4c2a
%endif
7f4c2a
7f4c2a
# We do not want to generate useless provides and requires for xlator
7f4c2a
# .so files to be set for glusterfs packages.
7f4c2a
# Filter all generated:
7f4c2a
#
7f4c2a
# TODO: RHEL5 does not have a convenient solution
7f4c2a
%if ( 0%{?rhel} == 6 )
7f4c2a
    # filter_setup exists in RHEL6 only
7f4c2a
    %filter_provides_in %{_libdir}/glusterfs/%{version}/
7f4c2a
    %global __filter_from_req %{?__filter_from_req} | grep -v -P '^(?!lib).*\.so.*$'
7f4c2a
    %filter_setup
7f4c2a
%else
7f4c2a
    # modern rpm and current Fedora do not generate requires when the
7f4c2a
    # provides are filtered
7f4c2a
    %global __provides_exclude_from ^%{_libdir}/glusterfs/%{version}/.*$
7f4c2a
%endif
7f4c2a
7f4c2a
7f4c2a
##-----------------------------------------------------------------------------
7f4c2a
## All package definitions should be placed here and keep them sorted
7f4c2a
##
7f4c2a
Summary:          Distributed File System
7f4c2a
%if ( 0%{_for_fedora_koji_builds} )
7f4c2a
Name:             glusterfs
7f4c2a
Version:          3.5.0
7f4c2a
Release:          1.atomic.1%{?prereltag:.%{prereltag}}%{?dist}
39a3ce
#Vendor removed
7f4c2a
%else
7f4c2a
Name:             glusterfs
7f4c2a
Version:          3.7.1
7f4c2a
Release:          17.atomic.1%{?dist}
7f4c2a
ExclusiveArch:    x86_64 aarch64
7f4c2a
%endif
7f4c2a
License:          GPLv2 or LGPLv3+
7f4c2a
Group:            System Environment/Base
7f4c2a
URL:              http://www.gluster.org/docs/index.php/GlusterFS
7f4c2a
%if ( 0%{_for_fedora_koji_builds} )
7f4c2a
Source0:          http://bits.gluster.org/pub/gluster/glusterfs/src/glusterfs-%{version}%{?prereltag}.tar.gz
7f4c2a
Source1:          glusterd.sysconfig
7f4c2a
Source2:          glusterfsd.sysconfig
7f4c2a
Source6:          rhel5-load-fuse-modules
7f4c2a
Source7:          glusterfsd.service
7f4c2a
Source8:          glusterfsd.init
7f4c2a
%else
7f4c2a
Source0:          glusterfs-3.7.1.tar.gz
7f4c2a
%endif
7f4c2a
7f4c2a
BuildRoot:        %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
7f4c2a
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} <= 5 )
7f4c2a
BuildRequires:    python-simplejson
7f4c2a
%endif
7f4c2a
%if ( 0%{?_with_systemd:1} )
7f4c2a
BuildRequires:    systemd-units
7f4c2a
%endif
7f4c2a
7f4c2a
Requires:         %{name}-libs = %{version}-%{release}
7f4c2a
BuildRequires:    bison flex
7f4c2a
BuildRequires:    gcc make automake libtool
7f4c2a
BuildRequires:    ncurses-devel readline-devel
7f4c2a
BuildRequires:    libxml2-devel openssl-devel
7f4c2a
BuildRequires:    libaio-devel libacl-devel
7f4c2a
BuildRequires:    python-devel
7f4c2a
BuildRequires:    python-ctypes
7f4c2a
BuildRequires:    userspace-rcu-devel >= 0.7
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} <= 5 )
7f4c2a
BuildRequires:    e2fsprogs-devel
7f4c2a
%else
7f4c2a
BuildRequires:    libuuid-devel
7f4c2a
%endif
7f4c2a
%if ( 0%{?_with_cmocka:1} )
7f4c2a
BuildRequires:    libcmocka-devel >= 1.0.1
7f4c2a
%endif
7f4c2a
%if ( 0%{!?_without_tiering:1} )
7f4c2a
BuildRequires:    sqlite-devel
7f4c2a
%endif
7f4c2a
%if ( 0%{!?_without_systemtap:1} )
7f4c2a
BuildRequires:    systemtap-sdt-devel
7f4c2a
%endif
7f4c2a
%if ( 0%{!?_without_bd:1} )
7f4c2a
BuildRequires:    lvm2-devel
7f4c2a
%endif
7f4c2a
%if ( 0%{!?_without_qemu_block:1} )
7f4c2a
BuildRequires:    glib2-devel
7f4c2a
%endif
7f4c2a
%if ( 0%{!?_without_georeplication:1} )
7f4c2a
BuildRequires:    libattr-devel
7f4c2a
%endif
7f4c2a
7f4c2a
%if (0%{?_with_firewalld:1})
7f4c2a
BuildRequires:    firewalld
7f4c2a
%endif
7f4c2a
7f4c2a
Obsoletes:        hekafs
7f4c2a
Obsoletes:        %{name}-common < %{version}-%{release}
7f4c2a
Obsoletes:        %{name}-core < %{version}-%{release}
7f4c2a
Obsoletes:        %{name}-ufo
7f4c2a
Provides:         %{name}-common = %{version}-%{release}
7f4c2a
Provides:         %{name}-core = %{version}-%{release}
7f4c2a
7f4c2a
# Patch0001: 0001-Update-rfc.sh-to-rhgs-3.1.patch
7f4c2a
Patch0002: 0002-features-quota-Do-unwind-if-postbuf-is-NULL.patch
7f4c2a
Patch0003: 0003-features-quota-Make-quota-deem-statfs-option-on-by-d.patch
7f4c2a
Patch0004: 0004-features-quota-prevent-statfs-frame-loss-when-an-err.patch
7f4c2a
Patch0005: 0005-quota-retry-connecting-to-quotad-on-ENOTCONN-error.patch
7f4c2a
Patch0006: 0006-snapshot-scheduler-Return-proper-error-code-in-case-.patch
7f4c2a
Patch0007: 0007-glusterd-do-not-show-pid-of-brick-in-volume-status-i.patch
7f4c2a
Patch0008: 0008-glusterd-Buffer-overflow-causing-crash-for-glusterd.patch
7f4c2a
Patch0009: 0009-glusterd-shared_storage-Provide-a-volume-set-option-.patch
7f4c2a
Patch0010: 0010-dht-rebalance-Fixed-rebalance-failure.patch
7f4c2a
Patch0011: 0011-cluster-dht-Fix-dht_setxattr-to-follow-files-under-m.patch
7f4c2a
Patch0012: 0012-cluster-dht-Don-t-rely-on-linkto-xattr-to-find-desti.patch
7f4c2a
Patch0013: 0013-afr-honour-selfheal-enable-disable-volume-set-option.patch
7f4c2a
Patch0014: 0014-cluster-ec-EC_XATTR_DIRTY-doesn-t-come-in-response.patch
7f4c2a
Patch0015: 0015-glusterd-Bump-op-version-and-max-op-version-for-3.7..patch
7f4c2a
Patch0016: 0016-build-remove-ghost-directory-entries.patch
7f4c2a
Patch0017: 0017-build-add-RHGS-specific-changes.patch
7f4c2a
Patch0018: 0018-secalert-remove-setuid-bit-for-fusermount-glusterfs.patch
7f4c2a
Patch0019: 0019-dht-Add-lookup-optimize-configuration-option-for-DHT.patch
7f4c2a
Patch0020: 0020-features-quota-Fix-ref-leak.patch
7f4c2a
Patch0021: 0021-worm-Let-lock-zero-xattrop-calls-succeed.patch
7f4c2a
Patch0022: 0022-glusterd-snapshot-Return-correct-errno-in-events-of-.patch
7f4c2a
Patch0023: 0023-snapshot-Fix-finding-brick-mount-path-logic.patch
7f4c2a
Patch0024: 0024-bitrot-glusterd-scrub-option-should-be-disabled-once.patch
7f4c2a
Patch0025: 0025-glusterd-fix-repeated-connection-to-nfssvc-failed-ms.patch
7f4c2a
Patch0026: 0026-rpc-call-transport_unref-only-on-non-NULL-transport.patch
7f4c2a
Patch0027: 0027-socket-throttle-only-connected-transport.patch
7f4c2a
Patch0028: 0028-cluster-dht-pass-a-destination-subvol-to-fop2-varian.patch
7f4c2a
Patch0029: 0029-cluster-ec-Prevent-double-unwind.patch
7f4c2a
Patch0030: 0030-Upcall-cache-invalidation-Ignore-fops-with-frame-roo.patch
7f4c2a
Patch0031: 0031-cli-Fix-incorrect-parse-logic-for-volume-heal-comman.patch
7f4c2a
Patch0032: 0032-nfs-allocate-and-return-the-hashkey-for-the-auth_cac.patch
7f4c2a
Patch0033: 0033-features-marker-Cleanup-loc-in-case-of-errors.patch
7f4c2a
Patch0034: 0034-ec-Changing-log-level-to-DEBUG-in-case-of-ENOENT.patch
7f4c2a
Patch0035: 0035-protocol-server-Changing-log-level-from-Warning-to-D.patch
7f4c2a
Patch0036: 0036-glusterd-Stop-tcp-ip-listeners-during-glusterd-exit.patch
7f4c2a
Patch0037: 0037-libglusterfs-Enabling-the-fini-in-cleanup_and_exit.patch
7f4c2a
Patch0038: 0038-glusterd-disable-ping-timer.patch
7f4c2a
Patch0039: 0039-cluster-ec-Wind-unlock-fops-at-all-cost.patch
7f4c2a
Patch0040: 0040-build-fix-compiling-on-older-distributions.patch
7f4c2a
Patch0041: 0041-rpm-correct-date-and-order-of-entries-in-the-changel.patch
7f4c2a
Patch0042: 0042-nfs-ganesha-HA-fix-race-between-setting-grace-and-vi.patch
7f4c2a
Patch0043: 0043-logging-log-Stale-filehandle-on-the-client-as-Debug.patch
7f4c2a
Patch0044: 0044-snapshot-scheduler-Handle-OSError-in-os.-callbacks.patch
7f4c2a
Patch0045: 0045-snapshot-scheduler-Check-if-GCRON_TASKS-exists-befor.patch
7f4c2a
Patch0046: 0046-storage-posix-Handle-MAKE_INODE_HANDLE-failures.patch
7f4c2a
Patch0047: 0047-snapshot-scheduler-Reload-etc-cron.d-glusterfs_snap_.patch
7f4c2a
Patch0048: 0048-build-packaging-corrections-for-RHEL-5.patch
7f4c2a
Patch0049: 0049-features-marker-Pass-along-xdata-to-lower-translator.patch
7f4c2a
Patch0050: 0050-cluster-dht-fix-incorrect-dst-subvol-info-in-inode_c.patch
7f4c2a
Patch0051: 0051-build-introduce-security-hardening-flags-in-gluster.patch
7f4c2a
Patch0052: 0052-glusterd-Display-status-of-Self-Heal-Daemon-for-disp.patch
7f4c2a
Patch0053: 0053-cluster-dht-maintain-start-state-of-rebalance-daemon.patch
7f4c2a
Patch0054: 0054-cluster-tier-account-for-reordered-layouts.patch
7f4c2a
Patch0055: 0055-cluster-tier-make-attach-detach-work-with-new-rebala.patch
7f4c2a
Patch0056: 0056-tier-dht-Fixing-non-atomic-promotion-demotion-w.r.t-.patch
7f4c2a
Patch0057: 0057-cluster-ec-Prevent-Null-dereference-in-dht-rename.patch
7f4c2a
Patch0058: 0058-features-changelog-Avoid-setattr-fop-logging-during-.patch
7f4c2a
Patch0059: 0059-tools-glusterfind-verifying-volume-presence.patch
7f4c2a
Patch0060: 0060-geo-rep-ignore-symlink-and-harlink-errors-in-geo-rep.patch
7f4c2a
Patch0061: 0061-spec-fix-add-pre-transaction-scripts-for-geo-rep-and.patch
7f4c2a
Patch0062: 0062-tools-glusterfind-Fix-GFID-to-Path-conversion-for-di.patch
7f4c2a
Patch0063: 0063-tools-glusterfind-Cleanup-glusterfind-dir-after-a-vo.patch
7f4c2a
Patch0064: 0064-geo-rep-Validate-use_meta_volume-option.patch
7f4c2a
Patch0065: 0065-tools-glusterfind-Cleanup-session-dir-after-delete.patch
7f4c2a
Patch0066: 0066-tools-glusterfind-verifying-volume-is-online.patch
7f4c2a
Patch0067: 0067-features-changelog-Do-htime-setxattr-without-XATTR_R.patch
7f4c2a
Patch0068: 0068-snapshot-scheduler-Modified-main-function-to-take-ar.patch
7f4c2a
Patch0069: 0069-glusterd-fix-op-versions-for-RHS-backwards-compatabi.patch
7f4c2a
Patch0070: 0070-tools-glusterfind-ignoring-deleted-files.patch
7f4c2a
Patch0071: 0071-spec-geo-rep-Add-rsync-as-dependency-for-georeplicat.patch
7f4c2a
Patch0072: 0072-tools-glusterfind-print-message-for-good-cases.patch
7f4c2a
Patch0073: 0073-common-ha-handle-long-node-names-and-node-names-with.patch
7f4c2a
Patch0074: 0074-common-ha-Clean-up-persistent-cib-state.patch
7f4c2a
Patch0075: 0075-glusterd-subvol_count-value-for-replicate-volume-sho.patch
7f4c2a
Patch0076: 0076-upcall-prevent-busy-loop-in-reaper-thread.patch
7f4c2a
Patch0077: 0077-common-ha-Clean-up-cib-state-completely.patch
7f4c2a
Patch0078: 0078-NFS-Ganesha-Return-corect-return-value.patch
7f4c2a
Patch0079: 0079-contrib-timer-wheel-fix-deadlock-in-del_timer.patch
7f4c2a
Patch0080: 0080-libglusterfs-update-glfs-messages-header-for-reserve.patch
7f4c2a
Patch0081: 0081-protocol-client-porting-log-messages-to-new-framewor.patch
7f4c2a
Patch0082: 0082-protocol-server-port-log-messages-to-new-framework.patch
7f4c2a
Patch0083: 0083-common-ha-cluster-HA-setup-sometimes-fails.patch
7f4c2a
Patch0084: 0084-ec-Display-correct-message-after-successful-heal-sta.patch
7f4c2a
Patch0085: 0085-cluster-ec-Prevent-races-in-ec_unlock-for-rename.patch
7f4c2a
Patch0086: 0086-glusterd-Porting-messages-to-new-logging-framework.patch
7f4c2a
Patch0087: 0087-sm-glusterd-Porting-messages-to-new-logging-framewor.patch
7f4c2a
Patch0088: 0088-rebalance-store-glusterd-glusterd-porting-to-new-log.patch
7f4c2a
Patch0089: 0089-handler-messages-glusterd-Porting-to-new-logging-fra.patch
7f4c2a
Patch0090: 0090-handshake-locks-mountbroker-syncop-glusterd-New-logg.patch
7f4c2a
Patch0091: 0091-utils-glusterd-Porting-to-new-logging-framwork.patch
7f4c2a
Patch0092: 0092-quota-glusterd-porting-to-new-logging-framework.patch
7f4c2a
Patch0093: 0093-snapshot-Fix-terminating-slash-in-brick-mount-path.patch
7f4c2a
Patch0094: 0094-rpm-glusterfs-devel-for-client-builds-should-not-dep.patch
7f4c2a
Patch0095: 0095-snapshot-man-page-modifications.patch
7f4c2a
Patch0096: 0096-ops-glusterd-Porting-messages-to-new-logging-framewo.patch
7f4c2a
Patch0097: 0097-glusterd-uss-snapshot-Intialise-snapdsvc-after-volfi.patch
7f4c2a
Patch0098: 0098-build-add-pretrans-check.patch
7f4c2a
Patch0099: 0099-glusterd-geo-rep-porting-log-messages-to-a-new-frame.patch
7f4c2a
Patch0100: 0100-glusterd-Fixing-the-compilation-failures.patch
7f4c2a
Patch0101: 0101-cluster-afr-Do-not-attempt-entry-self-heal-if-the-la.patch
7f4c2a
Patch0102: 0102-common-ha-cluster-HA-setup-sometimes-fails.patch
7f4c2a
Patch0103: 0103-glusterd-Fix-snapshot-of-a-volume-with-geo-rep.patch
7f4c2a
Patch0104: 0104-quota-fix-double-accounting-with-rename-operation.patch
7f4c2a
Patch0105: 0105-gluster-shared_storage-Add-Remove-shared-storage-fro.patch
7f4c2a
Patch0106: 0106-glusterd-mgmt_v3-Print-the-node-info-with-failure-me.patch
7f4c2a
Patch0107: 0107-build-exclude-libgfdb.pc-conditionally.patch
7f4c2a
Patch0108: 0108-libgfchangelog-Fix-crash-in-gf_changelog_process.patch
7f4c2a
Patch0109: 0109-Porting-new-log-messages-for-posix.patch
7f4c2a
Patch0110: 0110-rdma-porting-rdma-to-a-new-message-id-logging-format.patch
7f4c2a
Patch0111: 0111-glusterd-afr-set-afr-pending-xattrs-on-replace-brick.patch
7f4c2a
Patch0112: 0112-libglusterfs-allocate-a-segment-for-quota-logging.patch
7f4c2a
Patch0113: 0113-libgfapi-port-gfapi-to-new-logging-framework.patch
7f4c2a
Patch0114: 0114-cluster-afr-set-pending-xattrs-for-replaced-brick.patch
7f4c2a
Patch0115: 0115-common-ha-cluster-setup-issues-on-RHEL7.patch
7f4c2a
Patch0116: 0116-NFS-Ganesha-Automatically-export-vol-that-was-export.patch
7f4c2a
Patch0117: 0117-features-bitrot-tuanble-object-signing-waiting-time-.patch
7f4c2a
Patch0118: 0118-features-bitrot-fix-fd-leak-in-truncate-stub.patch
7f4c2a
Patch0119: 0119-tier-volume-set-Validate-volume-set-option-for-tier.patch
7f4c2a
Patch0120: 0120-glusterd-tier-glusterd-crashed-with-detach-tier-comm.patch
7f4c2a
Patch0121: 0121-glusterd-shared_storage-Added-help-description-for-e.patch
7f4c2a
Patch0122: 0122-cluster-dht-Prevent-use-after-free-bug.patch
7f4c2a
Patch0123: 0123-afr-complete-conservative-merge-even-in-case-of-gfid.patch
7f4c2a
Patch0124: 0124-dht-Error-value-check-before-performing-rebalance-co.patch
7f4c2a
Patch0125: 0125-common-ha-Fixing-add-node-operation.patch
7f4c2a
Patch0126: 0126-quota-allow-writes-when-with-ENOENT-ESTALE-on-active.patch
7f4c2a
Patch0127: 0127-tier-glusterd-Add-description-for-volume-set-options.patch
7f4c2a
Patch0128: 0128-cluster-ec-Avoid-parallel-executions-of-the-same-sta.patch
7f4c2a
Patch0129: 0129-nfs.c-nfs3.c-port-log-messages-to-a-new-framework.patch
7f4c2a
Patch0130: 0130-features-quota-port-QUOTA-messages-to-new-logging-fr.patch
7f4c2a
Patch0131: 0131-NFS-Ganesha-Implement-refresh-config.patch
7f4c2a
Patch0132: 0132-glusterd-use-mkdir_p-for-creating-rundir.patch
7f4c2a
Patch0133: 0133-glusterd-Store-peerinfo-after-updating-hostnames.patch
7f4c2a
Patch0134: 0134-tools-glusterfind-Fail-glusterfind-creation-if-volum.patch
7f4c2a
Patch0135: 0135-geo-rep-Fix-geo-rep-fanout-setup-with-meta-volume.patch
7f4c2a
Patch0136: 0136-geo-rep-Fix-toggling-of-use_meta_volume-config.patch
7f4c2a
Patch0137: 0137-geo-rep-Fix-glusterd-working-directory.patch
7f4c2a
Patch0138: 0138-geo-rep-Fix-ssh-issue-in-geo-rep.patch
7f4c2a
Patch0139: 0139-cluster-ec-wind-fops-on-good-subvols-for-access-read.patch
7f4c2a
Patch0140: 0140-cluster-afr-Pick-gfid-from-poststat-during-fresh-loo.patch
7f4c2a
Patch0141: 0141-protocol-client-removing-duplicate-printing-in-gf_ms.patch
7f4c2a
Patch0142: 0142-EC-While-Healing-a-file-set-the-config-xattr.patch
7f4c2a
Patch0143: 0143-libglusterfs-Introducing-new-logging-message.patch
7f4c2a
Patch0144: 0144-core-add-gf_ref_t-for-common-refcounting-structures.patch
7f4c2a
Patch0145: 0145-quota-marker-fix-mem-leak-in-marker.patch
7f4c2a
Patch0146: 0146-cluster-afr-set-pending-xattrs-for-replaced-brick.patch
7f4c2a
Patch0147: 0147-common-utils-libglusterfs-Porting-to-a-new-logging-f.patch
7f4c2a
Patch0148: 0148-afr-Block-fops-when-file-is-in-split-brain.patch
7f4c2a
Patch0149: 0149-quota-marker-accounting-goes-bad-with-rename-while-w.patch
7f4c2a
Patch0150: 0150-dht-Adding-log-messages-to-the-new-logging-framework.patch
7f4c2a
Patch0151: 0151-gfdb-libglusterfs-Porting-to-a-new-logging-framework.patch
7f4c2a
Patch0152: 0152-changetimerecorder-Porting-to-new-logging-framework.patch
7f4c2a
Patch0153: 0153-features-bitrot-log-scrub-frequency-throttle-values.patch
7f4c2a
Patch0154: 0154-tests-bitrot-Scrub-state-change-tests.patch
7f4c2a
Patch0155: 0155-common-ha-fix-delete-node.patch
7f4c2a
Patch0156: 0156-features-bit-rot-check-for-both-inmemory-and-ondisk-.patch
7f4c2a
Patch0157: 0157-bit-rot-New-logging-framework-for-bit-rot-log-messag.patch
7f4c2a
Patch0158: 0158-features-bitrot-cleanup-v1.patch
7f4c2a
Patch0159: 0159-features-bitrot-cleanup-v2.patch
7f4c2a
Patch0160: 0160-features-bitrot-handle-scrub-states-via-state-machin.patch
7f4c2a
Patch0161: 0161-geo-rep-Fix-add-user-in-mountbroker-user-management.patch
7f4c2a
Patch0162: 0162-features-bitrot-convert-pending-gf_log-to-gf_msg.patch
7f4c2a
Patch0163: 0163-geo-rep-ignore-ESTALE-as-ENOENT.patch
7f4c2a
Patch0164: 0164-fd-inode-libglusterfs-porting-to-a-new-logging-frame.patch
7f4c2a
Patch0165: 0165-call-stub-circ-buff-client_t-compat-dict-libglusterf.patch
7f4c2a
Patch0166: 0166-graph-libglusterfs-porting-to-a-new-logging-framewor.patch
7f4c2a
Patch0167: 0167-defaults-globals-iobuf-latency-logging-options-xlato.patch
7f4c2a
Patch0168: 0168-event-parse-utils-quota-common-utils-rbthash-libglus.patch
7f4c2a
Patch0169: 0169-cluster-afr-truncate-all-sinks-files.patch
7f4c2a
Patch0170: 0170-features-changelog-Always-log-directory-rename-opera.patch
7f4c2a
Patch0171: 0171-cluster-ec-Fix-incorrect-check-for-iatt-differences.patch
7f4c2a
Patch0172: 0172-ec-Porting-messages-to-new-logging-framework.patch
7f4c2a
Patch0173: 0173-glusterd-Porting-left-out-log-messages-to-new-framew.patch
7f4c2a
Patch0174: 0174-ganesha-volinfo-is-not-persisted-after-modifying-opt.patch
7f4c2a
Patch0175: 0175-common-utils-libglusterfs-removing-strerror-to-avoid.patch
7f4c2a
Patch0176: 0176-NFS-Ganesha-Automatically-export-volume-after-volume.patch
7f4c2a
Patch0177: 0177-storage-posix-Check-xdata-for-NULL-before-dict_get.patch
7f4c2a
Patch0178: 0178-protocol-server-Include-a-check-to-validate-xprt-cli.patch
7f4c2a
Patch0179: 0179-Upcall-Fix-an-issue-with-invalidating-parent-entries.patch
7f4c2a
Patch0180: 0180-mem-pool-stack-store-syncop-timer-libglusterfs-Porti.patch
7f4c2a
Patch0181: 0181-quota-Fix-statfs-values-in-EC-when-quota_deem_statfs.patch
7f4c2a
Patch0182: 0182-Logging-Porting-the-performance-translator.patch
7f4c2a
Patch0183: 0183-afr-Porting-messages-to-new-logging-framework.patch
7f4c2a
Patch0184: 0184-features-performace-Updating-the-glfs-components.patch
7f4c2a
Patch0185: 0185-features-bit-rot-stub-deny-access-to-bad-objects.patch
7f4c2a
Patch0186: 0186-features-bit-rot-stub-do-not-allow-setxattr-and-remo.patch
7f4c2a
Patch0187: 0187-tier-ctr-Ignore-creation-of-T-file-and-Ctr-Lookup-he.patch
7f4c2a
Patch0188: 0188-glusterd-Correction-in-Error-message-for-disperse-vo.patch
7f4c2a
Patch0189: 0189-gfapi-symlink-resolution-for-glfs_object.patch
7f4c2a
Patch0190: 0190-feature-performace-Fix-broken-build.patch
7f4c2a
Patch0191: 0191-rdma-removing-duplicate-printing-of-error-string-in-.patch
7f4c2a
Patch0192: 0192-NFS-Ganesha-Exporting-volume-fails.patch
7f4c2a
Patch0193: 0193-common-ha-Fix-var-lib-nfs-statd-state-path-creation.patch
7f4c2a
Patch0194: 0194-cluster-ec-Add-throttling-in-background-healing.patch
7f4c2a
Patch0195: 0195-cluster-ec-Remove-dead-code.patch
7f4c2a
Patch0196: 0196-protocol-server-Correctly-reconfigure-auth.ssl-allow.patch
7f4c2a
Patch0197: 0197-cluster-dht-use-refcount-to-manage-memory-used-to-st.patch
7f4c2a
Patch0198: 0198-protocol-server-fail-setvolume-if-any-of-xlators-is-.patch
7f4c2a
Patch0199: 0199-NFS-Ganesha-Unexport-fails-after-S31ganesha-start-sc.patch
7f4c2a
Patch0200: 0200-cluster-ec-Make-background-healing-optional-behavior.patch
7f4c2a
Patch0201: 0201-access-control-validating-context-of-access-control-.patch
7f4c2a
Patch0202: 0202-tools-glusterfind-RENAME-and-MODIFY-issues.patch
7f4c2a
Patch0203: 0203-cluster-afr-expunge-first-impunge-next-in-entry-self.patch
7f4c2a
Patch0204: 0204-glusterd-shared_storage-Use-var-lib-glusterd-ss_bric.patch
7f4c2a
Patch0205: 0205-cluster-ec-Don-t-read-from-bad-subvols.patch
7f4c2a
Patch0206: 0206-cluster-ec-Remove-failed-subvols-from-source-sink-co.patch
7f4c2a
Patch0207: 0207-protocol-server-Add-null-check-to-gf_client_put.patch
7f4c2a
Patch0208: 0208-quota-fix-mem-leak-in-quota-enforcer.patch
7f4c2a
Patch0209: 0209-posix-fix-mem-leak-in-posix_get_ancestry-error-path.patch
7f4c2a
Patch0210: 0210-quota-marker-fix-mem-leak-in-marker.patch
7f4c2a
Patch0211: 0211-glusterd-Removing-sync-lock-and-unlock-inside-rcu-re.patch
7f4c2a
Patch0212: 0212-cluster-ec-Fix-use-after-free-bug.patch
7f4c2a
Patch0213: 0213-glusterd-geo-rep-Fix-failure-of-geo-rep-pause.patch
7f4c2a
Patch0214: 0214-glusterd-Get-the-local-txn_info-based-on-trans_id-in.patch
7f4c2a
Patch0215: 0215-snapshot-scheduler-Use-var-run-gluster-shared_storag.patch
7f4c2a
Patch0216: 0216-glusterd-correct-replace-brick-flow.patch
7f4c2a
Patch0217: 0217-glusterd-snapd-Stop-snapd-daemon-when-glusterd-is-re.patch
7f4c2a
Patch0218: 0218-quotad-create-sock-listener-only-after-graph-init-is.patch
7f4c2a
Patch0219: 0219-common-ha-ganesha-ha.sh-status-tries-to-read-ganesha.patch
7f4c2a
Patch0220: 0220-quota-marker-fix-mem-leak-in-marker.patch
7f4c2a
Patch0221: 0221-quota-marker-use-smaller-stacksize-in-synctask-for-m.patch
7f4c2a
Patch0222: 0222-quota-marker-set-lk_owner-when-taking-lock-on-parent.patch
7f4c2a
Patch0223: 0223-quota-marker-fix-spurious-failure-afr-quota-xattr-md.patch
7f4c2a
Patch0224: 0224-gfapi-Update-loc-inode-accordingly-in-glfs_loc_link.patch
7f4c2a
Patch0225: 0225-glusterd-Fix-management-encryption-issues-with-Glust.patch
7f4c2a
Patch0226: 0226-NFS-Ganesha-Export-fails-on-RHEL-7.1.patch
7f4c2a
Patch0227: 0227-libgfdb-sql-Fixing-broken-query-of-find_unchanged.patch
7f4c2a
Patch0228: 0228-glusterd-use-a-real-host-name-instead-of-numeric-whe.patch
7f4c2a
Patch0229: 0229-glusterd-Send-friend-update-even-for-EVENT_RCVD_ACC.patch
7f4c2a
Patch0230: 0230-logging-Fixed-incorrect-buffer-size.patch
7f4c2a
Patch0231: 0231-quota-marker-inspect-file-dir-invoked-without-having.patch
7f4c2a
Patch0232: 0232-NFS-Ganesha-Add-node-does-not-copy-exports-directory.patch
7f4c2a
Patch0233: 0233-access_control-avoid-double-unrefing-of-acl-variable.patch
7f4c2a
Patch0234: 0234-features-posix-Avoid-double-free-of-a-variable-in-po.patch
7f4c2a
Patch0235: 0235-cluster-ec-Propogate-correct-errno-in-case-of-failur.patch
7f4c2a
Patch0236: 0236-cluster-ec-Prevent-data-corruptions.patch
7f4c2a
Patch0237: 0237-rpc-transport-socket_poller-fixes-for-proper-working.patch
7f4c2a
Patch0238: 0238-glusterd-Fix-failure-in-replace-brick-when-src-brick.patch
7f4c2a
Patch0239: 0239-quota-marker-fix-mem-leak-in-marker.patch
7f4c2a
Patch0240: 0240-features-bitrot-move-inode-state-just-at-the-last-mo.patch
7f4c2a
Patch0241: 0241-features-bitrot-throttle-signer.patch
7f4c2a
Patch0242: 0242-extras-hooks-Fix-parsing-of-args-in-S30samba-set.sh.patch
7f4c2a
Patch0243: 0243-timer-fix-race-between-gf_timer_call_cancel-and-gf_t.patch
7f4c2a
Patch0244: 0244-cluster-ec-Handle-race-between-unlock-timer-new-lock.patch
7f4c2a
Patch0245: 0245-Revert-timer-fix-race-between-gf_timer_call_cancel-a.patch
7f4c2a
Patch0246: 0246-glusterd-Porting-the-left-out-gf_log_callingfns-to-n.patch
7f4c2a
Patch0247: 0247-glusterd-Pass-NULL-in-glusterd_svc_manager-in-gluste.patch
7f4c2a
Patch0248: 0248-glusterd-Do-not-log-failure-if-glusterd_get_txn_opin.patch
7f4c2a
Patch0249: 0249-cluster-afr-Fix-incorrect-logging-in-read-transactio.patch
7f4c2a
Patch0250: 0250-heal-Do-not-invoke-glfs_fini-for-glfs-heal-commands.patch
7f4c2a
Patch0251: 0251-dht-send-lookup-even-for-fd-based-operations-during-.patch
7f4c2a
Patch0252: 0252-geo-rep-Fix-fd-referenced-before-assignment.patch
7f4c2a
Patch0253: 0253-geo-rep-Fix-history-failure.patch
7f4c2a
Patch0254: 0254-geo-rep-Do-not-crash-worker-on-ESTALE.patch
7f4c2a
Patch0255: 0255-glusterd-getting-txn_id-from-frame-cookie-in-op_sm-c.patch
7f4c2a
Patch0256: 0256-client-rpc-make-ping-timeout-configurable-for-gluste.patch
7f4c2a
Patch0257: 0257-quota-marker-contribution-with-list_del-can-cause-me.patch
7f4c2a
Patch0258: 0258-quota-Fix-crash-in-quota-enforcer.patch
7f4c2a
Patch0259: 0259-quota-don-t-log-error-when-disk-quota-exceeded.patch
7f4c2a
Patch0260: 0260-posix-posix_make_ancestryfromgfid-shouldn-t-log-ENOE.patch
7f4c2a
Patch0261: 0261-quota-validating-soft-limit-percentage.patch
7f4c2a
Patch0262: 0262-quota-marker-set-log-level-to-debug-for-ESTALE-ENOEN.patch
7f4c2a
Patch0263: 0263-quota-fix-parents-caching-during-build-ancestry.patch
7f4c2a
Patch0264: 0264-posix-fix-mem-leak-in-posix-xattrop.patch
7f4c2a
Patch0265: 0265-rpc-server-glusterd-Init-transport-list-for-accepted.patch
7f4c2a
Patch0266: 0266-uss-Take-ref-on-root-inode.patch
7f4c2a
Patch0267: 0267-glusterd-initialize-the-daemon-services-on-demand.patch
7f4c2a
Patch0268: 0268-glusterd-Stop-restart-notify-to-daemons-svcs-during-.patch
7f4c2a
Patch0269: 0269-snapview-client-Allocate-memory-using-GF_CALLOC.patch
7f4c2a
Patch0270: 0270-rpc-add-owner-xlator-argument-to-rpc_clnt_new.patch
7f4c2a
Patch0271: 0271-rebalance-glusterd-Refactor-rebalance-volfile.patch
7f4c2a
Patch0272: 0272-glusterd-log-improvement-in-glusterd_peer_rpc_notify.patch
7f4c2a
Patch0273: 0273-glusterd-rebalance-trusted-rebalance-volfile.patch
7f4c2a
Patch0274: 0274-quota-checking-for-absolute-path-in-quota-command.patch
7f4c2a
Patch0275: 0275-quota-volume-reset-shouldn-t-remove-quota-deem-statf.patch
7f4c2a
Patch0276: 0276-libglusterfs-write-error-handling-when-filesystem-ha.patch
7f4c2a
Patch0277: 0277-xml-output-Fix-non-uniform-opErrstr-xml-output.patch
7f4c2a
Patch0278: 0278-Set-nfs.disable-to-on-when-global-NFS-Ganesha-key-is.patch
7f4c2a
Patch0279: 0279-logging-Stop-using-global-xlator-for-log_buf-allocat.patch
7f4c2a
Patch0280: 0280-quota-marker-fix-inode-quota-with-rename.patch
7f4c2a
Patch0281: 0281-bitrot-glusterd-gluster-volume-set-command-for-bitro.patch
7f4c2a
Patch0282: 0282-features-bit-rot-stub-handle-REOPEN_WAIT-on-forgotte.patch
7f4c2a
Patch0283: 0283-features-bit-rot-stub-fail-the-fop-if-inode-context-.patch
7f4c2a
Patch0284: 0284-bitrot-Scrubber-log-should-mark-bad-file-as-a-ALERT-.patch
7f4c2a
Patch0285: 0285-protocol-server-use-different-dict-for-resolving.patch
7f4c2a
Patch0286: 0286-tests-set-inode-lru-limit-to-1-and-check-if-bit-rot-.patch
7f4c2a
Patch0287: 0287-protocol-server-forget-the-inodes-which-got-ENOENT-i.patch
7f4c2a
Patch0288: 0288-afr-launch-index-heal-on-local-subvols-up-on-a-child.patch
7f4c2a
Patch0289: 0289-snapshot-scheduler-Output-correction-of-initialisati.patch
7f4c2a
Patch0290: 0290-snapshot-Log-deletion-of-snapshot-during-auto-delete.patch
7f4c2a
Patch0291: 0291-snapshot-scheduler-Check-if-volume-exists-before-add.patch
7f4c2a
Patch0292: 0292-dht-block-handle-create-op-falling-to-decommissioned.patch
7f4c2a
Patch0293: 0293-cluster-dht-avoid-mknod-on-decommissioned-brick.patch
7f4c2a
Patch0294: 0294-afr-modify-afr_txn_nothing_failed.patch
7f4c2a
Patch0295: 0295-heal-Add-check-for-healing-directories-in-split-brai.patch
7f4c2a
Patch0296: 0296-cluster-afr-Examine-data-metadata-readable-for-read-.patch
7f4c2a
Patch0297: 0297-common-ha-concise-output-for-HA-status.patch
7f4c2a
Patch0298: 0298-snapshot-Make-fops-static-for-correct-resolution-of-.patch
7f4c2a
Patch0299: 0299-glusterd-stop-all-the-daemons-services-on-peer-detac.patch
7f4c2a
Patch0300: 0300-glusterd-Don-t-allow-remove-brick-start-commit-if-gl.patch
7f4c2a
Patch0301: 0301-libgfapi-Gracefully-exit-when-glfd-is-invalid.patch
7f4c2a
Patch0302: 0302-snapshot-cleanup-snaps-during-unprobe.patch
7f4c2a
Patch0303: 0303-libgfapi-adding-follow-flag-to-glfs_h_lookupat.patch
7f4c2a
Patch0304: 0304-libgfapi-non-default-symbol-version-macros-are-incor.patch
7f4c2a
Patch0305: 0305-tools-glusterfind-Do-not-show-session-corrupted-if-n.patch
7f4c2a
Patch0306: 0306-tools-glusterfind-Prepend-prefix-in-case-of-delete.patch
7f4c2a
Patch0307: 0307-tools-glusterfind-password-prompts-for-peer-nodes-on.patch
7f4c2a
Patch0308: 0308-marker-fix-log-when-loc.parent-and-inode-gfid-is-NUL.patch
7f4c2a
Patch0309: 0309-posix-xattrop-GF_XATTROP_GET_AND_SET-implementation.patch
7f4c2a
Patch0310: 0310-cli-on-error-invoke-cli_cmd_broadcast_response-funct.patch
7f4c2a
Patch0311: 0311-dht-lock-on-subvols-to-prevent-lookup-vs-rmdir-race.patch
7f4c2a
Patch0312: 0312-glusterd-use-2-epoll-worker-threads-by-default.patch
7f4c2a
Patch0313: 0313-glusterd-Re-enable-ping-timer-between-glusterds.patch
7f4c2a
Patch0314: 0314-event-epoll-Use-pollers-to-check-if-event_pool_dispa.patch
7f4c2a
Patch0315: 0315-ec-trusted.ec.version-xattr-of-all-root-directories-.patch
7f4c2a
Patch0316: 0316-gluster-cli-snapshot-delete-all-does-not-work-with-x.patch
7f4c2a
Patch0317: 0317-marker-preserve-previous-dirty-flag-during-update-tx.patch
7f4c2a
Patch0318: 0318-cluster-ec-Fix-write-size-in-self-heal.patch
7f4c2a
Patch0319: 0319-cluster-dht-Don-t-set-posix-acls-on-linkto-files.patch
7f4c2a
Patch0320: 0320-dht-lock-on-all-subvols-to-prevent-rmdir-vs-lookup-s.patch
7f4c2a
Patch0321: 0321-CommonHA-Fix-the-path-of-systemctl-cmd.patch
7f4c2a
Patch0322: 0322-uss-handle-buf-variable-properly-in-svs_glfs_readdir.patch
7f4c2a
Patch0323: 0323-features-snap-cleanup-the-root-loc-in-statfs.patch
7f4c2a
Patch0324: 0324-dht-NULL-dereferencing-causes-crash.patch
7f4c2a
Patch0325: 0325-dht-remove-brick-Avoid-data-loss-for-hard-link-migra.patch
7f4c2a
Patch0326: 0326-firewall-spec-Create-glusterfs-firewall-service-if-f.patch
7f4c2a
Patch0327: 0327-glusterd-disable-ping-timer-b-w-glusterd-and-make-ep.patch
7f4c2a
Patch0328: 0328-dht-cluster-Avoid-crash-if-local-is-NULL.patch
7f4c2a
Patch0329: 0329-afr-get-split-brain-status-in-a-synctask.patch
7f4c2a
Patch0330: 0330-afr-perform-replace-brick-in-a-synctask.patch
7f4c2a
Patch0331: 0331-dht-cluster-Avoid-double-unlock-in-dht_refresh_layou.patch
7f4c2a
7f4c2a
%description
7f4c2a
GlusterFS is a distributed file-system capable of scaling to several
7f4c2a
petabytes. It aggregates various storage bricks over Infiniband RDMA
7f4c2a
or TCP/IP interconnect into one large parallel network file
7f4c2a
system. GlusterFS is one of the most sophisticated file systems in
7f4c2a
terms of features and extensibility.  It borrows a powerful concept
7f4c2a
called Translators from GNU Hurd kernel. Much of the code in GlusterFS
7f4c2a
is in user space and easily manageable.
7f4c2a
7f4c2a
This package includes the glusterfs binary, the glusterfsd daemon and the
7f4c2a
libglusterfs and glusterfs translator modules common to both GlusterFS server
7f4c2a
and client framework.
7f4c2a
7f4c2a
%package api
7f4c2a
Summary:          GlusterFS api library
7f4c2a
Group:            System Environment/Daemons
7f4c2a
Requires:         %{name} = %{version}-%{release}
7f4c2a
Requires:         %{name}-client-xlators = %{version}-%{release}
7f4c2a
# we provide the Python package/namespace 'gluster'
7f4c2a
#Provides:         python-gluster = %{version}-%{release}
7f4c2a
7f4c2a
%description api
7f4c2a
GlusterFS is a distributed file-system capable of scaling to several
7f4c2a
petabytes. It aggregates various storage bricks over Infiniband RDMA
7f4c2a
or TCP/IP interconnect into one large parallel network file
7f4c2a
system. GlusterFS is one of the most sophisticated file systems in
7f4c2a
terms of features and extensibility.  It borrows a powerful concept
7f4c2a
called Translators from GNU Hurd kernel. Much of the code in GlusterFS
7f4c2a
is in user space and easily manageable.
7f4c2a
7f4c2a
This package provides the glusterfs libgfapi library.
7f4c2a
7f4c2a
%package api-devel
7f4c2a
Summary:          Development Libraries
7f4c2a
Group:            Development/Libraries
7f4c2a
Requires:         %{name} = %{version}-%{release}
7f4c2a
Requires:         %{name}-devel = %{version}-%{release}
7f4c2a
Requires:         libacl-devel
7f4c2a
7f4c2a
%description api-devel
7f4c2a
GlusterFS is a distributed file-system capable of scaling to several
7f4c2a
petabytes. It aggregates various storage bricks over Infiniband RDMA
7f4c2a
or TCP/IP interconnect into one large parallel network file
7f4c2a
system. GlusterFS is one of the most sophisticated file systems in
7f4c2a
terms of features and extensibility.  It borrows a powerful concept
7f4c2a
called Translators from GNU Hurd kernel. Much of the code in GlusterFS
7f4c2a
is in user space and easily manageable.
7f4c2a
7f4c2a
This package provides the api include files.
7f4c2a
7f4c2a
%package cli
7f4c2a
Summary:          GlusterFS CLI
7f4c2a
Group:            Applications/File
7f4c2a
Requires:         %{name}-libs = %{version}-%{release}
7f4c2a
7f4c2a
%description cli
7f4c2a
GlusterFS is a distributed file-system capable of scaling to several
7f4c2a
petabytes. It aggregates various storage bricks over Infiniband RDMA
7f4c2a
or TCP/IP interconnect into one large parallel network file
7f4c2a
system. GlusterFS is one of the most sophisticated file systems in
7f4c2a
terms of features and extensibility.  It borrows a powerful concept
7f4c2a
called Translators from GNU Hurd kernel. Much of the code in GlusterFS
7f4c2a
is in user space and easily manageable.
7f4c2a
7f4c2a
This package provides the GlusterFS CLI application and its man page
7f4c2a
7f4c2a
%package devel
7f4c2a
Summary:          Development Libraries
7f4c2a
Group:            Development/Libraries
7f4c2a
Requires:         %{name} = %{version}-%{release}
7f4c2a
# Needed for the Glupy examples to work
7f4c2a
%if ( 0%{!?_without_extra_xlators:1} )
7f4c2a
Requires:         %{name}-extra-xlators = %{version}-%{release}
7f4c2a
%endif
7f4c2a
7f4c2a
%description devel
7f4c2a
GlusterFS is a distributed file-system capable of scaling to several
7f4c2a
petabytes. It aggregates various storage bricks over Infiniband RDMA
7f4c2a
or TCP/IP interconnect into one large parallel network file
7f4c2a
system. GlusterFS is one of the most sophisticated file systems in
7f4c2a
terms of features and extensibility.  It borrows a powerful concept
7f4c2a
called Translators from GNU Hurd kernel. Much of the code in GlusterFS
7f4c2a
is in user space and easily manageable.
7f4c2a
7f4c2a
This package provides the development libraries and include files.
7f4c2a
7f4c2a
%if ( 0%{!?_without_extra_xlators:1} )
7f4c2a
%package extra-xlators
7f4c2a
Summary:          Extra Gluster filesystem Translators
7f4c2a
Group:            Applications/File
7f4c2a
# We need python-gluster rpm for gluster module's __init__.py in Python
7f4c2a
# site-packages area
7f4c2a
Requires:         python-gluster = %{version}-%{release}
7f4c2a
Requires:         python python-ctypes
7f4c2a
7f4c2a
%description extra-xlators
7f4c2a
GlusterFS is a distributed file-system capable of scaling to several
7f4c2a
petabytes. It aggregates various storage bricks over Infiniband RDMA
7f4c2a
or TCP/IP interconnect into one large parallel network file
7f4c2a
system. GlusterFS is one of the most sophisticated file systems in
7f4c2a
terms of features and extensibility.  It borrows a powerful concept
7f4c2a
called Translators from GNU Hurd kernel. Much of the code in GlusterFS
7f4c2a
is in user space and easily manageable.
7f4c2a
7f4c2a
This package provides extra filesystem Translators, such as Glupy,
7f4c2a
for GlusterFS.
7f4c2a
%endif
7f4c2a
7f4c2a
%package fuse
7f4c2a
Summary:          Fuse client
7f4c2a
Group:            Applications/File
7f4c2a
BuildRequires:    fuse-devel
7f4c2a
Requires:         attr
7f4c2a
7f4c2a
Requires:         %{name} = %{version}-%{release}
7f4c2a
Requires:         %{name}-client-xlators = %{version}-%{release}
7f4c2a
7f4c2a
Obsoletes:        %{name}-client < %{version}-%{release}
7f4c2a
Provides:         %{name}-client = %{version}-%{release}
7f4c2a
7f4c2a
%description fuse
7f4c2a
GlusterFS is a distributed file-system capable of scaling to several
7f4c2a
petabytes. It aggregates various storage bricks over Infiniband RDMA
7f4c2a
or TCP/IP interconnect into one large parallel network file
7f4c2a
system. GlusterFS is one of the most sophisticated file systems in
7f4c2a
terms of features and extensibility.  It borrows a powerful concept
7f4c2a
called Translators from GNU Hurd kernel. Much of the code in GlusterFS
7f4c2a
is in user space and easily manageable.
7f4c2a
7f4c2a
This package provides support to FUSE based clients and inlcudes the
7f4c2a
glusterfs(d) binary.
7f4c2a
7f4c2a
%if ( 0%{?_build_server} )
7f4c2a
%package ganesha
7f4c2a
Summary:          NFS-Ganesha configuration
7f4c2a
Group:            Applications/File
7f4c2a
7f4c2a
Requires:         %{name}-server = %{version}-%{release}
7f4c2a
Requires:         nfs-ganesha-gluster
7f4c2a
Requires:         pcs
7f4c2a
7f4c2a
%description ganesha
7f4c2a
GlusterFS is a distributed file-system capable of scaling to several
7f4c2a
petabytes. It aggregates various storage bricks over Infiniband RDMA
7f4c2a
or TCP/IP interconnect into one large parallel network file
7f4c2a
system. GlusterFS is one of the most sophisticated file systems in
7f4c2a
terms of features and extensibility.  It borrows a powerful concept
7f4c2a
called Translators from GNU Hurd kernel. Much of the code in GlusterFS
7f4c2a
is in user space and easily manageable.
7f4c2a
7f4c2a
This package provides the configuration and related files for using
7f4c2a
NFS-Ganesha as the NFS server using GlusterFS
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{?_build_server} )
7f4c2a
%if ( 0%{!?_without_georeplication:1} )
7f4c2a
%package geo-replication
7f4c2a
Summary:          GlusterFS Geo-replication
7f4c2a
Group:            Applications/File
7f4c2a
Requires:         %{name} = %{version}-%{release}
7f4c2a
Requires:         %{name}-server = %{version}-%{release}
7f4c2a
Requires:         python python-ctypes
7f4c2a
Requires:         rsync
7f4c2a
7f4c2a
%description geo-replication
7f4c2a
GlusterFS is a distributed file-system capable of scaling to several
7f4c2a
peta-bytes. It aggregates various storage bricks over Infiniband RDMA
7f4c2a
or TCP/IP interconnect into one large parallel network file
7f4c2a
system. GlusterFS is one of the most sophisticated file system in
7f4c2a
terms of features and extensibility.  It borrows a powerful concept
7f4c2a
called Translators from GNU Hurd kernel. Much of the code in GlusterFS
7f4c2a
is in userspace and easily manageable.
7f4c2a
7f4c2a
This package provides support to geo-replication.
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
7f4c2a
%package libs
7f4c2a
Summary:          GlusterFS common libraries
7f4c2a
Group:            Applications/File
7f4c2a
%if ( 0%{!?_without_syslog:1} )
7f4c2a
%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} > 6 )
7f4c2a
Requires:         rsyslog-mmjsonparse
7f4c2a
%endif
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} == 6 )
7f4c2a
Requires:         rsyslog-mmcount
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
7f4c2a
%description libs
7f4c2a
GlusterFS is a distributed file-system capable of scaling to several
7f4c2a
petabytes. It aggregates various storage bricks over Infiniband RDMA
7f4c2a
or TCP/IP interconnect into one large parallel network file
7f4c2a
system. GlusterFS is one of the most sophisticated file systems in
7f4c2a
terms of features and extensibility.  It borrows a powerful concept
7f4c2a
called Translators from GNU Hurd kernel. Much of the code in GlusterFS
7f4c2a
is in user space and easily manageable.
7f4c2a
7f4c2a
This package provides the base GlusterFS libraries
7f4c2a
7f4c2a
%package -n python-gluster
7f4c2a
Summary:          GlusterFS python library
7f4c2a
Group:            Development/Tools
7f4c2a
Requires:         python
7f4c2a
7f4c2a
%description -n python-gluster
7f4c2a
GlusterFS is a distributed file-system capable of scaling to several
7f4c2a
petabytes. It aggregates various storage bricks over Infiniband RDMA
7f4c2a
or TCP/IP interconnect into one large parallel network file
7f4c2a
system. GlusterFS is one of the most sophisticated file systems in
7f4c2a
terms of features and extensibility.  It borrows a powerful concept
7f4c2a
called Translators from GNU Hurd kernel. Much of the code in GlusterFS
7f4c2a
is in user space and easily manageable.
7f4c2a
7f4c2a
This package contains the python modules of GlusterFS and own gluster
7f4c2a
namespace.
7f4c2a
7f4c2a
7f4c2a
%if ( 0%{!?_without_rdma:1} )
7f4c2a
%package rdma
7f4c2a
Summary:          GlusterFS rdma support for ib-verbs
7f4c2a
Group:            Applications/File
7f4c2a
BuildRequires:    libibverbs-devel
7f4c2a
BuildRequires:    librdmacm-devel >= 1.0.15
7f4c2a
Requires:         %{name} = %{version}-%{release}
7f4c2a
7f4c2a
%description rdma
7f4c2a
GlusterFS is a distributed file-system capable of scaling to several
7f4c2a
petabytes. It aggregates various storage bricks over Infiniband RDMA
7f4c2a
or TCP/IP interconnect into one large parallel network file
7f4c2a
system. GlusterFS is one of the most sophisticated file systems in
7f4c2a
terms of features and extensibility.  It borrows a powerful concept
7f4c2a
called Translators from GNU Hurd kernel. Much of the code in GlusterFS
7f4c2a
is in user space and easily manageable.
7f4c2a
7f4c2a
This package provides support to ib-verbs library.
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{?_build_server} )
7f4c2a
%if ( 0%{!?_without_regression_tests:1} )
7f4c2a
%package regression-tests
7f4c2a
Summary:          Development Tools
7f4c2a
Group:            Development/Tools
7f4c2a
Requires:         %{name} = %{version}-%{release}
7f4c2a
Requires:         %{name}-fuse = %{version}-%{release}
7f4c2a
Requires:         %{name}-server = %{version}-%{release}
7f4c2a
## thin provisioning support
7f4c2a
Requires:         lvm2 >= 2.02.89
7f4c2a
Requires:         perl(App::Prove) perl(Test::Harness) gcc util-linux-ng
7f4c2a
Requires:         python attr dbench file git libacl-devel net-tools
7f4c2a
Requires:         nfs-utils xfsprogs yajl
7f4c2a
7f4c2a
%description regression-tests
7f4c2a
The Gluster Test Framework, is a suite of scripts used for
7f4c2a
regression testing of Gluster.
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{?_build_server} )
7f4c2a
%if ( 0%{!?_without_ocf:1} )
7f4c2a
%package resource-agents
7f4c2a
Summary:          OCF Resource Agents for GlusterFS
7f4c2a
License:          GPLv3+
7f4c2a
%if ( ! ( 0%{?rhel} && 0%{?rhel} < 6 || 0%{?sles_version} ) )
7f4c2a
# EL5 does not support noarch sub-packages
7f4c2a
BuildArch:        noarch
7f4c2a
%endif
7f4c2a
# this Group handling comes from the Fedora resource-agents package
7f4c2a
%if ( 0%{?fedora} || 0%{?centos_version} || 0%{?rhel} )
7f4c2a
Group:            System Environment/Base
7f4c2a
%else
7f4c2a
Group:            Productivity/Clustering/HA
7f4c2a
%endif
7f4c2a
# for glusterd
7f4c2a
Requires:         %{name}-server
7f4c2a
# depending on the distribution, we need pacemaker or resource-agents
7f4c2a
Requires:         %{_prefix}/lib/ocf/resource.d
7f4c2a
7f4c2a
%description resource-agents
7f4c2a
GlusterFS is a distributed file-system capable of scaling to several
7f4c2a
petabytes. It aggregates various storage bricks over Infiniband RDMA
7f4c2a
or TCP/IP interconnect into one large parallel network file
7f4c2a
system. GlusterFS is one of the most sophisticated file systems in
7f4c2a
terms of features and extensibility.  It borrows a powerful concept
7f4c2a
called Translators from GNU Hurd kernel. Much of the code in GlusterFS
7f4c2a
is in user space and easily manageable.
7f4c2a
7f4c2a
This package provides the resource agents which plug glusterd into
7f4c2a
Open Cluster Framework (OCF) compliant cluster resource managers,
7f4c2a
like Pacemaker.
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{?_build_server} )
7f4c2a
%package server
7f4c2a
Summary:          Clustered file-system server
7f4c2a
Group:            System Environment/Daemons
7f4c2a
Requires:         %{name} = %{version}-%{release}
7f4c2a
Requires:         %{name}-libs = %{version}-%{release}
7f4c2a
Requires:         %{name}-cli = %{version}-%{release}
7f4c2a
# some daemons (like quota) use a fuse-mount, glusterfsd is part of -fuse
7f4c2a
Requires:         %{name}-fuse = %{version}-%{release}
7f4c2a
# self-heal daemon, rebalance, nfs-server etc. are actually clients
7f4c2a
Requires:         %{name}-client-xlators = %{version}-%{release}
7f4c2a
# psmisc for killall, lvm2 for snapshot, and nfs-utils and
7f4c2a
# rpcbind/portmap for gnfs server
7f4c2a
Requires:         psmisc
7f4c2a
Requires:         lvm2
7f4c2a
Requires:         nfs-utils
7f4c2a
%if ( 0%{?_with_systemd:1} )
7f4c2a
Requires(post):   systemd-units
7f4c2a
Requires(preun):  systemd-units
7f4c2a
Requires(postun): systemd-units
7f4c2a
%else
7f4c2a
Requires(post):   /sbin/chkconfig
7f4c2a
Requires(preun):  /sbin/service
7f4c2a
Requires(preun):  /sbin/chkconfig
7f4c2a
Requires(postun): /sbin/service
7f4c2a
%endif
7f4c2a
%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 )
7f4c2a
Requires:         rpcbind
7f4c2a
%else
7f4c2a
Requires:         portmap
7f4c2a
%endif
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} < 6 )
7f4c2a
Obsoletes:        %{name}-geo-replication = %{version}-%{release}
7f4c2a
%endif
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} <= 6 )
7f4c2a
Requires:         python-argparse
7f4c2a
%endif
7f4c2a
Requires:         pyxattr
7f4c2a
7f4c2a
%description server
7f4c2a
GlusterFS is a distributed file-system capable of scaling to several
7f4c2a
petabytes. It aggregates various storage bricks over Infiniband RDMA
7f4c2a
or TCP/IP interconnect into one large parallel network file
7f4c2a
system. GlusterFS is one of the most sophisticated file systems in
7f4c2a
terms of features and extensibility.  It borrows a powerful concept
7f4c2a
called Translators from GNU Hurd kernel. Much of the code in GlusterFS
7f4c2a
is in user space and easily manageable.
7f4c2a
7f4c2a
This package provides the glusterfs server daemon.
7f4c2a
%endif
7f4c2a
7f4c2a
%package client-xlators
7f4c2a
Summary:          GlusterFS client-side translators
7f4c2a
Group:            Applications/File
7f4c2a
7f4c2a
%description client-xlators
7f4c2a
GlusterFS is a distributed file-system capable of scaling to several
7f4c2a
petabytes. It aggregates various storage bricks over Infiniband RDMA
7f4c2a
or TCP/IP interconnect into one large parallel network file
7f4c2a
system. GlusterFS is one of the most sophisticated file systems in
7f4c2a
terms of features and extensibility.  It borrows a powerful concept
7f4c2a
called Translators from GNU Hurd kernel. Much of the code in GlusterFS
7f4c2a
is in user space and easily manageable.
7f4c2a
7f4c2a
This package provides the translators needed on any GlusterFS client.
7f4c2a
7f4c2a
%prep
7f4c2a
%setup -q -n %{name}-%{version}%{?prereltag}
7f4c2a
# %patch0001 -p1
7f4c2a
%patch0002 -p1
7f4c2a
%patch0003 -p1
7f4c2a
%patch0004 -p1
7f4c2a
%patch0005 -p1
7f4c2a
%patch0006 -p1
7f4c2a
%patch0007 -p1
7f4c2a
%patch0008 -p1
7f4c2a
%patch0009 -p1
7f4c2a
%patch0010 -p1
7f4c2a
%patch0011 -p1
7f4c2a
%patch0012 -p1
7f4c2a
%patch0013 -p1
7f4c2a
%patch0014 -p1
7f4c2a
%patch0015 -p1
7f4c2a
%patch0016 -p1
7f4c2a
%patch0017 -p1
7f4c2a
%patch0018 -p1
7f4c2a
%patch0019 -p1
7f4c2a
%patch0020 -p1
7f4c2a
%patch0021 -p1
7f4c2a
%patch0022 -p1
7f4c2a
%patch0023 -p1
7f4c2a
%patch0024 -p1
7f4c2a
%patch0025 -p1
7f4c2a
%patch0026 -p1
7f4c2a
%patch0027 -p1
7f4c2a
%patch0028 -p1
7f4c2a
%patch0029 -p1
7f4c2a
%patch0030 -p1
7f4c2a
%patch0031 -p1
7f4c2a
%patch0032 -p1
7f4c2a
%patch0033 -p1
7f4c2a
%patch0034 -p1
7f4c2a
%patch0035 -p1
7f4c2a
%patch0036 -p1
7f4c2a
%patch0037 -p1
7f4c2a
%patch0038 -p1
7f4c2a
%patch0039 -p1
7f4c2a
%patch0040 -p1
7f4c2a
%patch0041 -p1
7f4c2a
%patch0042 -p1
7f4c2a
%patch0043 -p1
7f4c2a
%patch0044 -p1
7f4c2a
%patch0045 -p1
7f4c2a
%patch0046 -p1
7f4c2a
%patch0047 -p1
7f4c2a
%patch0048 -p1
7f4c2a
%patch0049 -p1
7f4c2a
%patch0050 -p1
7f4c2a
%patch0051 -p1
7f4c2a
%patch0052 -p1
7f4c2a
%patch0053 -p1
7f4c2a
%patch0054 -p1
7f4c2a
%patch0055 -p1
7f4c2a
%patch0056 -p1
7f4c2a
%patch0057 -p1
7f4c2a
%patch0058 -p1
7f4c2a
%patch0059 -p1
7f4c2a
%patch0060 -p1
7f4c2a
%patch0061 -p1
7f4c2a
%patch0062 -p1
7f4c2a
%patch0063 -p1
7f4c2a
%patch0064 -p1
7f4c2a
%patch0065 -p1
7f4c2a
%patch0066 -p1
7f4c2a
%patch0067 -p1
7f4c2a
%patch0068 -p1
7f4c2a
%patch0069 -p1
7f4c2a
%patch0070 -p1
7f4c2a
%patch0071 -p1
7f4c2a
%patch0072 -p1
7f4c2a
%patch0073 -p1
7f4c2a
%patch0074 -p1
7f4c2a
%patch0075 -p1
7f4c2a
%patch0076 -p1
7f4c2a
%patch0077 -p1
7f4c2a
%patch0078 -p1
7f4c2a
%patch0079 -p1
7f4c2a
%patch0080 -p1
7f4c2a
%patch0081 -p1
7f4c2a
%patch0082 -p1
7f4c2a
%patch0083 -p1
7f4c2a
%patch0084 -p1
7f4c2a
%patch0085 -p1
7f4c2a
%patch0086 -p1
7f4c2a
%patch0087 -p1
7f4c2a
%patch0088 -p1
7f4c2a
%patch0089 -p1
7f4c2a
%patch0090 -p1
7f4c2a
%patch0091 -p1
7f4c2a
%patch0092 -p1
7f4c2a
%patch0093 -p1
7f4c2a
%patch0094 -p1
7f4c2a
%patch0095 -p1
7f4c2a
%patch0096 -p1
7f4c2a
%patch0097 -p1
7f4c2a
%patch0098 -p1
7f4c2a
%patch0099 -p1
7f4c2a
%patch0100 -p1
7f4c2a
%patch0101 -p1
7f4c2a
%patch0102 -p1
7f4c2a
%patch0103 -p1
7f4c2a
%patch0104 -p1
7f4c2a
%patch0105 -p1
7f4c2a
%patch0106 -p1
7f4c2a
%patch0107 -p1
7f4c2a
%patch0108 -p1
7f4c2a
%patch0109 -p1
7f4c2a
%patch0110 -p1
7f4c2a
%patch0111 -p1
7f4c2a
%patch0112 -p1
7f4c2a
%patch0113 -p1
7f4c2a
%patch0114 -p1
7f4c2a
%patch0115 -p1
7f4c2a
%patch0116 -p1
7f4c2a
%patch0117 -p1
7f4c2a
%patch0118 -p1
7f4c2a
%patch0119 -p1
7f4c2a
%patch0120 -p1
7f4c2a
%patch0121 -p1
7f4c2a
%patch0122 -p1
7f4c2a
%patch0123 -p1
7f4c2a
%patch0124 -p1
7f4c2a
%patch0125 -p1
7f4c2a
%patch0126 -p1
7f4c2a
%patch0127 -p1
7f4c2a
%patch0128 -p1
7f4c2a
%patch0129 -p1
7f4c2a
%patch0130 -p1
7f4c2a
%patch0131 -p1
7f4c2a
%patch0132 -p1
7f4c2a
%patch0133 -p1
7f4c2a
%patch0134 -p1
7f4c2a
%patch0135 -p1
7f4c2a
%patch0136 -p1
7f4c2a
%patch0137 -p1
7f4c2a
%patch0138 -p1
7f4c2a
%patch0139 -p1
7f4c2a
%patch0140 -p1
7f4c2a
%patch0141 -p1
7f4c2a
%patch0142 -p1
7f4c2a
%patch0143 -p1
7f4c2a
%patch0144 -p1
7f4c2a
%patch0145 -p1
7f4c2a
%patch0146 -p1
7f4c2a
%patch0147 -p1
7f4c2a
%patch0148 -p1
7f4c2a
%patch0149 -p1
7f4c2a
%patch0150 -p1
7f4c2a
%patch0151 -p1
7f4c2a
%patch0152 -p1
7f4c2a
%patch0153 -p1
7f4c2a
%patch0154 -p1
7f4c2a
%patch0155 -p1
7f4c2a
%patch0156 -p1
7f4c2a
%patch0157 -p1
7f4c2a
%patch0158 -p1
7f4c2a
%patch0159 -p1
7f4c2a
%patch0160 -p1
7f4c2a
%patch0161 -p1
7f4c2a
%patch0162 -p1
7f4c2a
%patch0163 -p1
7f4c2a
%patch0164 -p1
7f4c2a
%patch0165 -p1
7f4c2a
%patch0166 -p1
7f4c2a
%patch0167 -p1
7f4c2a
%patch0168 -p1
7f4c2a
%patch0169 -p1
7f4c2a
%patch0170 -p1
7f4c2a
%patch0171 -p1
7f4c2a
%patch0172 -p1
7f4c2a
%patch0173 -p1
7f4c2a
%patch0174 -p1
7f4c2a
%patch0175 -p1
7f4c2a
%patch0176 -p1
7f4c2a
%patch0177 -p1
7f4c2a
%patch0178 -p1
7f4c2a
%patch0179 -p1
7f4c2a
%patch0180 -p1
7f4c2a
%patch0181 -p1
7f4c2a
%patch0182 -p1
7f4c2a
%patch0183 -p1
7f4c2a
%patch0184 -p1
7f4c2a
%patch0185 -p1
7f4c2a
%patch0186 -p1
7f4c2a
%patch0187 -p1
7f4c2a
%patch0188 -p1
7f4c2a
%patch0189 -p1
7f4c2a
%patch0190 -p1
7f4c2a
%patch0191 -p1
7f4c2a
%patch0192 -p1
7f4c2a
%patch0193 -p1
7f4c2a
%patch0194 -p1
7f4c2a
%patch0195 -p1
7f4c2a
%patch0196 -p1
7f4c2a
%patch0197 -p1
7f4c2a
%patch0198 -p1
7f4c2a
%patch0199 -p1
7f4c2a
%patch0200 -p1
7f4c2a
%patch0201 -p1
7f4c2a
%patch0202 -p1
7f4c2a
%patch0203 -p1
7f4c2a
%patch0204 -p1
7f4c2a
%patch0205 -p1
7f4c2a
%patch0206 -p1
7f4c2a
%patch0207 -p1
7f4c2a
%patch0208 -p1
7f4c2a
%patch0209 -p1
7f4c2a
%patch0210 -p1
7f4c2a
%patch0211 -p1
7f4c2a
%patch0212 -p1
7f4c2a
%patch0213 -p1
7f4c2a
%patch0214 -p1
7f4c2a
%patch0215 -p1
7f4c2a
%patch0216 -p1
7f4c2a
%patch0217 -p1
7f4c2a
%patch0218 -p1
7f4c2a
%patch0219 -p1
7f4c2a
%patch0220 -p1
7f4c2a
%patch0221 -p1
7f4c2a
%patch0222 -p1
7f4c2a
%patch0223 -p1
7f4c2a
%patch0224 -p1
7f4c2a
%patch0225 -p1
7f4c2a
%patch0226 -p1
7f4c2a
%patch0227 -p1
7f4c2a
%patch0228 -p1
7f4c2a
%patch0229 -p1
7f4c2a
%patch0230 -p1
7f4c2a
%patch0231 -p1
7f4c2a
%patch0232 -p1
7f4c2a
%patch0233 -p1
7f4c2a
%patch0234 -p1
7f4c2a
%patch0235 -p1
7f4c2a
%patch0236 -p1
7f4c2a
%patch0237 -p1
7f4c2a
%patch0238 -p1
7f4c2a
%patch0239 -p1
7f4c2a
%patch0240 -p1
7f4c2a
%patch0241 -p1
7f4c2a
%patch0242 -p1
7f4c2a
%patch0243 -p1
7f4c2a
%patch0244 -p1
7f4c2a
%patch0245 -p1
7f4c2a
%patch0246 -p1
7f4c2a
%patch0247 -p1
7f4c2a
%patch0248 -p1
7f4c2a
%patch0249 -p1
7f4c2a
%patch0250 -p1
7f4c2a
%patch0251 -p1
7f4c2a
%patch0252 -p1
7f4c2a
%patch0253 -p1
7f4c2a
%patch0254 -p1
7f4c2a
%patch0255 -p1
7f4c2a
%patch0256 -p1
7f4c2a
%patch0257 -p1
7f4c2a
%patch0258 -p1
7f4c2a
%patch0259 -p1
7f4c2a
%patch0260 -p1
7f4c2a
%patch0261 -p1
7f4c2a
%patch0262 -p1
7f4c2a
%patch0263 -p1
7f4c2a
%patch0264 -p1
7f4c2a
%patch0265 -p1
7f4c2a
%patch0266 -p1
7f4c2a
%patch0267 -p1
7f4c2a
%patch0268 -p1
7f4c2a
%patch0269 -p1
7f4c2a
%patch0270 -p1
7f4c2a
%patch0271 -p1
7f4c2a
%patch0272 -p1
7f4c2a
%patch0273 -p1
7f4c2a
%patch0274 -p1
7f4c2a
%patch0275 -p1
7f4c2a
%patch0276 -p1
7f4c2a
%patch0277 -p1
7f4c2a
%patch0278 -p1
7f4c2a
%patch0279 -p1
7f4c2a
%patch0280 -p1
7f4c2a
%patch0281 -p1
7f4c2a
%patch0282 -p1
7f4c2a
%patch0283 -p1
7f4c2a
%patch0284 -p1
7f4c2a
%patch0285 -p1
7f4c2a
%patch0286 -p1
7f4c2a
%patch0287 -p1
7f4c2a
%patch0288 -p1
7f4c2a
%patch0289 -p1
7f4c2a
%patch0290 -p1
7f4c2a
%patch0291 -p1
7f4c2a
%patch0292 -p1
7f4c2a
%patch0293 -p1
7f4c2a
%patch0294 -p1
7f4c2a
%patch0295 -p1
7f4c2a
%patch0296 -p1
7f4c2a
%patch0297 -p1
7f4c2a
%patch0298 -p1
7f4c2a
%patch0299 -p1
7f4c2a
%patch0300 -p1
7f4c2a
%patch0301 -p1
7f4c2a
%patch0302 -p1
7f4c2a
%patch0303 -p1
7f4c2a
%patch0304 -p1
7f4c2a
%patch0305 -p1
7f4c2a
%patch0306 -p1
7f4c2a
%patch0307 -p1
7f4c2a
%patch0308 -p1
7f4c2a
%patch0309 -p1
7f4c2a
%patch0310 -p1
7f4c2a
%patch0311 -p1
7f4c2a
%patch0312 -p1
7f4c2a
%patch0313 -p1
7f4c2a
%patch0314 -p1
7f4c2a
%patch0315 -p1
7f4c2a
%patch0316 -p1
7f4c2a
%patch0317 -p1
7f4c2a
%patch0318 -p1
7f4c2a
%patch0319 -p1
7f4c2a
%patch0320 -p1
7f4c2a
%patch0321 -p1
7f4c2a
%patch0322 -p1
7f4c2a
%patch0323 -p1
7f4c2a
%patch0324 -p1
7f4c2a
%patch0325 -p1
7f4c2a
%patch0326 -p1
7f4c2a
%patch0327 -p1
7f4c2a
%patch0328 -p1
7f4c2a
%patch0329 -p1
7f4c2a
%patch0330 -p1
7f4c2a
%patch0331 -p1
7f4c2a
7f4c2a
%build
7f4c2a
# In RHEL7 few hardening flags are available by default, however the RELRO
7f4c2a
# default behaviour is partial, convert to full
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} >= 7 )
7f4c2a
LDFLAGS="$RPM_LD_FLAGS -Wl,-z,relro,-z,now"
7f4c2a
export LDFLAGS
7f4c2a
%else
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} == 6 )
7f4c2a
CFLAGS="$RPM_OPT_FLAGS -fPIE -DPIE"
7f4c2a
LDFLAGS="$RPM_LD_FLAGS -pie -Wl,-z,relro,-z,now"
7f4c2a
%else
7f4c2a
#It appears that with gcc-4.1.2 in RHEL5 there is an issue using both -fPIC and
7f4c2a
 # -fPIE that makes -z relro not work; -fPIE seems to undo what -fPIC does
7f4c2a
CFLAGS="$RPM_OPT_FLAGS"
7f4c2a
LDFLAGS="$RPM_LD_FLAGS -Wl,-z,relro,-z,now"
7f4c2a
%endif
7f4c2a
export CFLAGS
7f4c2a
export LDFLAGS
7f4c2a
%endif
7f4c2a
7f4c2a
./autogen.sh && %configure \
7f4c2a
        %{?_with_cmocka} \
7f4c2a
        %{?_with_tmpfilesdir} \
7f4c2a
        %{?_without_bd} \
7f4c2a
        %{?_without_epoll} \
7f4c2a
        %{?_without_fusermount} \
7f4c2a
        %{?_without_georeplication} \
7f4c2a
        %{?_with_firewalld} \
7f4c2a
        %{?_without_ocf} \
7f4c2a
        %{?_without_qemu_block} \
7f4c2a
        %{?_without_rdma} \
7f4c2a
        %{?_without_syslog} \
7f4c2a
        %{?_without_systemtap} \
7f4c2a
        %{?_without_tiering}
7f4c2a
7f4c2a
# fix hardening and remove rpath in shlibs
7f4c2a
%if ( 0%{?fedora} && 0%{?fedora} > 17 ) || ( 0%{?rhel} && 0%{?rhel} > 6 )
7f4c2a
sed -i 's| \\\$compiler_flags |&\\\$LDFLAGS |' libtool
7f4c2a
%endif
7f4c2a
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|' libtool
7f4c2a
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|' libtool
7f4c2a
7f4c2a
make %{?_smp_mflags}
7f4c2a
7f4c2a
# Build Glupy
7f4c2a
pushd xlators/features/glupy/src
7f4c2a
FLAGS="$RPM_OPT_FLAGS" python setup.py build
7f4c2a
popd
7f4c2a
7f4c2a
%check
7f4c2a
make check
7f4c2a
7f4c2a
%install
7f4c2a
rm -rf %{buildroot}
7f4c2a
make install DESTDIR=%{buildroot}
7f4c2a
# install the Glupy Python library in /usr/lib/python*/site-packages
7f4c2a
pushd xlators/features/glupy/src
7f4c2a
python setup.py install --skip-build --verbose --root %{buildroot}
7f4c2a
popd
7f4c2a
# Install include directory
7f4c2a
mkdir -p %{buildroot}%{_includedir}/glusterfs
7f4c2a
install -p -m 0644 libglusterfs/src/*.h \
7f4c2a
    %{buildroot}%{_includedir}/glusterfs/
7f4c2a
install -p -m 0644 contrib/uuid/*.h \
7f4c2a
    %{buildroot}%{_includedir}/glusterfs/
7f4c2a
# Following needed by hekafs multi-tenant translator
7f4c2a
mkdir -p %{buildroot}%{_includedir}/glusterfs/rpc
7f4c2a
install -p -m 0644 rpc/rpc-lib/src/*.h \
7f4c2a
    %{buildroot}%{_includedir}/glusterfs/rpc/
7f4c2a
install -p -m 0644 rpc/xdr/src/*.h \
7f4c2a
    %{buildroot}%{_includedir}/glusterfs/rpc/
7f4c2a
mkdir -p %{buildroot}%{_includedir}/glusterfs/server
7f4c2a
install -p -m 0644 xlators/protocol/server/src/*.h \
7f4c2a
    %{buildroot}%{_includedir}/glusterfs/server/
7f4c2a
%if ( 0%{_for_fedora_koji_builds} )
7f4c2a
install -D -p -m 0644 %{SOURCE1} \
7f4c2a
    %{buildroot}%{_sysconfdir}/sysconfig/glusterd
7f4c2a
install -D -p -m 0644 %{SOURCE2} \
7f4c2a
    %{buildroot}%{_sysconfdir}/sysconfig/glusterfsd
7f4c2a
%else
7f4c2a
install -D -p -m 0644 extras/glusterd-sysconfig \
7f4c2a
    %{buildroot}%{_sysconfdir}/sysconfig/glusterd
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{_for_fedora_koji_builds} )
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} <= 5 )
7f4c2a
install -D -p -m 0755 %{SOURCE6} \
7f4c2a
    %{buildroot}%{_sysconfdir}/sysconfig/modules/glusterfs-fuse.modules
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
7f4c2a
mkdir -p %{buildroot}%{_localstatedir}/log/glusterd
7f4c2a
mkdir -p %{buildroot}%{_localstatedir}/log/glusterfs
7f4c2a
mkdir -p %{buildroot}%{_localstatedir}/log/glusterfsd
7f4c2a
mkdir -p %{buildroot}%{_localstatedir}/run/gluster
7f4c2a
touch %{buildroot}%{python_sitelib}/gluster/__init__.py
7f4c2a
7f4c2a
7f4c2a
# Remove unwanted files from all the shared libraries
7f4c2a
find %{buildroot}%{_libdir} -name '*.a' -delete
7f4c2a
find %{buildroot}%{_libdir} -name '*.la' -delete
7f4c2a
7f4c2a
# Remove installed docs, the ones we want are included by %%doc, in
7f4c2a
# /usr/share/doc/glusterfs or /usr/share/doc/glusterfs-x.y.z depending
7f4c2a
# on the distribution
7f4c2a
%if ( 0%{?fedora} && 0%{?fedora} > 19 ) || ( 0%{?rhel} && 0%{?rhel} > 6 )
7f4c2a
rm -rf %{buildroot}%{_pkgdocdir}/*
7f4c2a
%else
7f4c2a
rm -rf %{buildroot}%{_defaultdocdir}/%{name}
7f4c2a
mkdir -p %{buildroot}%{_pkgdocdir}
7f4c2a
%endif
7f4c2a
head -50 ChangeLog > ChangeLog.head && mv ChangeLog.head ChangeLog
7f4c2a
cat << EOM >> ChangeLog
7f4c2a
7f4c2a
More commit messages for this ChangeLog can be found at
7f4c2a
https://forge.gluster.org/glusterfs-core/glusterfs/commits/v%{version}%{?prereltag}
7f4c2a
EOM
7f4c2a
7f4c2a
# Remove benchmarking and other unpackaged files
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} < 6 )
7f4c2a
rm -rf %{buildroot}/benchmarking
7f4c2a
rm -f %{buildroot}/glusterfs-mode.el
7f4c2a
rm -f %{buildroot}/glusterfs.vim
7f4c2a
%else
7f4c2a
# make install always puts these in %%{_defaultdocdir}/%%{name} so don't
7f4c2a
# use %%{_pkgdocdir}; that will be wrong on later Fedora distributions
7f4c2a
rm -rf %{buildroot}%{_defaultdocdir}/%{name}/benchmarking
7f4c2a
rm -f %{buildroot}%{_defaultdocdir}/%{name}/glusterfs-mode.el
7f4c2a
rm -f %{buildroot}%{_defaultdocdir}/%{name}/glusterfs.vim
7f4c2a
%endif
7f4c2a
7f4c2a
# Create working directory
7f4c2a
mkdir -p %{buildroot}%{_sharedstatedir}/glusterd
7f4c2a
7f4c2a
# Update configuration file to /var/lib working directory
7f4c2a
sed -i 's|option working-directory /etc/glusterd|option working-directory %{_sharedstatedir}/glusterd|g' \
7f4c2a
    %{buildroot}%{_sysconfdir}/glusterfs/glusterd.vol
7f4c2a
7f4c2a
# Install glusterfsd .service or init.d file
7f4c2a
%if ( 0%{_for_fedora_koji_builds} )
7f4c2a
%_init_install %{glusterfsd_service} glusterfsd
7f4c2a
%endif
7f4c2a
7f4c2a
install -D -p -m 0644 extras/glusterfs-logrotate \
7f4c2a
    %{buildroot}%{_sysconfdir}/logrotate.d/glusterfs
7f4c2a
7f4c2a
%if ( 0%{!?_without_georeplication:1} )
7f4c2a
mkdir -p %{buildroot}%{_sharedstatedir}/glusterd/geo-replication
7f4c2a
touch %{buildroot}%{_sharedstatedir}/glusterd/geo-replication/gsyncd_template.conf
7f4c2a
install -D -p -m 0644 extras/glusterfs-georep-logrotate \
7f4c2a
    %{buildroot}%{_sysconfdir}/logrotate.d/glusterfs-georep
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{!?_without_syslog:1} )
7f4c2a
%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} > 6 )
7f4c2a
install -D -p -m 0644 extras/gluster-rsyslog-7.2.conf \
7f4c2a
    %{buildroot}%{_sysconfdir}/rsyslog.d/gluster.conf.example
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} == 6 )
7f4c2a
install -D -p -m 0644 extras/gluster-rsyslog-5.8.conf \
7f4c2a
    %{buildroot}%{_sysconfdir}/rsyslog.d/gluster.conf.example
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 )
7f4c2a
install -D -p -m 0644 extras/logger.conf.example \
7f4c2a
    %{buildroot}%{_sysconfdir}/glusterfs/logger.conf.example
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
7f4c2a
touch %{buildroot}%{_sharedstatedir}/glusterd/glusterd.info
7f4c2a
touch %{buildroot}%{_sharedstatedir}/glusterd/options
7f4c2a
subdirs=("add-brick" "create" "copy-file" "delete" "gsync-create" "remove-brick" "reset" "set" "start" "stop")
7f4c2a
for dir in ${subdirs[@]}
7f4c2a
do
7f4c2a
mkdir -p %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/"$dir"/{pre,post}
7f4c2a
done
7f4c2a
mkdir -p %{buildroot}%{_sharedstatedir}/glusterd/glustershd
7f4c2a
mkdir -p %{buildroot}%{_sharedstatedir}/glusterd/peers
7f4c2a
mkdir -p %{buildroot}%{_sharedstatedir}/glusterd/vols
7f4c2a
mkdir -p %{buildroot}%{_sharedstatedir}/glusterd/nfs/run
7f4c2a
touch %{buildroot}%{_sharedstatedir}/glusterd/nfs/nfs-server.vol
7f4c2a
touch %{buildroot}%{_sharedstatedir}/glusterd/nfs/run/nfs.pid
7f4c2a
7f4c2a
%{__install} -p -m 0744 extras/hook-scripts/start/post/*.sh   \
7f4c2a
    %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/start/post
7f4c2a
%{__install} -p -m 0744 extras/hook-scripts/stop/pre/*.sh   \
7f4c2a
    %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/stop/pre
7f4c2a
%{__install} -p -m 0744 extras/hook-scripts/set/post/*.sh   \
7f4c2a
    %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/set/post
7f4c2a
%{__install} -p -m 0744 extras/hook-scripts/add-brick/post/*.sh   \
7f4c2a
    %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/add-brick/post
7f4c2a
%{__install} -p -m 0744 extras/hook-scripts/add-brick/pre/*.sh   \
7f4c2a
    %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/add-brick/pre
7f4c2a
%{__install} -p -m 0744 extras/hook-scripts/reset/post/*.sh   \
7f4c2a
    %{buildroot}%{_sharedstatedir}/glusterd/hooks/1/reset/post
7f4c2a
7f4c2a
7f4c2a
find ./tests ./run-tests.sh -type f | cpio -pd %{buildroot}%{_prefix}/share/glusterfs
7f4c2a
7f4c2a
## Install bash completion for cli
7f4c2a
install -p -m 0744 -D extras/command-completion/gluster.bash \
7f4c2a
    %{buildroot}%{_sysconfdir}/bash_completion.d/gluster
7f4c2a
7f4c2a
7f4c2a
%clean
7f4c2a
rm -rf %{buildroot}
7f4c2a
7f4c2a
##-----------------------------------------------------------------------------
7f4c2a
## All %post should be placed here and keep them sorted
7f4c2a
##
7f4c2a
%post
7f4c2a
%if ( 0%{!?_without_syslog:1} )
7f4c2a
%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 )
7f4c2a
%_init_restart rsyslog
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
7f4c2a
%post api
7f4c2a
/sbin/ldconfig
7f4c2a
7f4c2a
%post fuse
7f4c2a
%if ( 0%{?rhel} == 5 )
7f4c2a
modprobe fuse
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{?_build_server} )
7f4c2a
%if ( 0%{!?_without_georeplication:1} )
7f4c2a
%post geo-replication
7f4c2a
#restart glusterd.
7f4c2a
if [ $1 -ge 1 ]; then
7f4c2a
    %_init_restart glusterd
7f4c2a
fi
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
7f4c2a
%post libs
7f4c2a
/sbin/ldconfig
7f4c2a
7f4c2a
%if ( 0%{?_build_server} )
7f4c2a
%post server
7f4c2a
# Legacy server
7f4c2a
%_init_enable glusterd
7f4c2a
# fix bz#1110715
7f4c2a
if [ -f %_init_glusterfsd ]; then
7f4c2a
%_init_enable glusterfsd
7f4c2a
fi
7f4c2a
# ".cmd_log_history" is renamed to "cmd_history.log" in GlusterFS-3.7 .
7f4c2a
# While upgrading glusterfs-server package form GlusterFS version <= 3.6 to
7f4c2a
# GlusterFS version 3.7, ".cmd_log_history" should be renamed to
7f4c2a
# "cmd_history.log" to retain cli command history contents.
7f4c2a
if [ -f %{_localstatedir}/log/glusterfs/.cmd_log_history ]; then
7f4c2a
    mv %{_localstatedir}/log/glusterfs/.cmd_log_history \
7f4c2a
       %{_localstatedir}/log/glusterfs/cmd_history.log
7f4c2a
fi
7f4c2a
7f4c2a
# Genuine Fedora (and EPEL) builds never put gluster files in /etc; if
7f4c2a
# there are any files in /etc from a prior gluster.org install, move them
7f4c2a
# to /var/lib. (N.B. Starting with 3.3.0 all gluster files are in /var/lib
7f4c2a
# in gluster.org RPMs.) Be careful to copy them on the off chance that
7f4c2a
# /etc and /var/lib are on separate file systems
7f4c2a
if [ -d /etc/glusterd -a ! -h %{_sharedstatedir}/glusterd ]; then
7f4c2a
    mkdir -p %{_sharedstatedir}/glusterd
7f4c2a
    cp -a /etc/glusterd %{_sharedstatedir}/glusterd
7f4c2a
    rm -rf /etc/glusterd
7f4c2a
    ln -sf %{_sharedstatedir}/glusterd /etc/glusterd
7f4c2a
fi
7f4c2a
7f4c2a
# Rename old volfiles in an RPM-standard way.  These aren't actually
7f4c2a
# considered package config files, so %%config doesn't work for them.
7f4c2a
if [ -d %{_sharedstatedir}/glusterd/vols ]; then
7f4c2a
    for file in $(find %{_sharedstatedir}/glusterd/vols -name '*.vol'); do
7f4c2a
        newfile=${file}.rpmsave
7f4c2a
        echo "warning: ${file} saved as ${newfile}"
7f4c2a
        cp ${file} ${newfile}
7f4c2a
    done
7f4c2a
fi
7f4c2a
7f4c2a
# add marker translator
7f4c2a
# but first make certain that there are no old libs around to bite us
7f4c2a
# BZ 834847
7f4c2a
if [ -e /etc/ld.so.conf.d/glusterfs.conf ]; then
7f4c2a
    rm -f /etc/ld.so.conf.d/glusterfs.conf
7f4c2a
    /sbin/ldconfig
7f4c2a
fi
7f4c2a
7f4c2a
%if (0%{?_with_firewalld:1})
7f4c2a
#reload service files if firewalld running
7f4c2a
if $(systemctl is-active firewalld 1>/dev/null 2>&1;; then
7f4c2a
  #firewalld-filesystem is not available for rhel7, so command used for reload.
7f4c2a
  firewall-cmd  --reload
7f4c2a
fi
7f4c2a
%endif
7f4c2a
7f4c2a
pidof -c -o %PPID -x glusterd &> /dev/null
7f4c2a
if [ $? -eq 0 ]; then
7f4c2a
    kill -9 `pgrep -f gsyncd.py` &> /dev/null
7f4c2a
7f4c2a
    killall --wait glusterd &> /dev/null
7f4c2a
    glusterd --xlator-option *.upgrade=on -N
7f4c2a
7f4c2a
    #Cleaning leftover glusterd socket file which is created by glusterd in
7f4c2a
    #rpm_script_t context.
7f4c2a
    rm -rf /var/run/glusterd.socket
7f4c2a
7f4c2a
    # glusterd _was_ running, we killed it, it exited after *.upgrade=on,
7f4c2a
    # so start it again
7f4c2a
    %_init_start glusterd
7f4c2a
else
7f4c2a
    glusterd --xlator-option *.upgrade=on -N
7f4c2a
7f4c2a
    #Cleaning leftover glusterd socket file which is created by glusterd in
7f4c2a
    #rpm_script_t context.
7f4c2a
    rm -rf /var/run/glusterd.socket
7f4c2a
fi
7f4c2a
%endif
7f4c2a
7f4c2a
##-----------------------------------------------------------------------------
7f4c2a
## All %preun should be placed here and keep them sorted
7f4c2a
##
7f4c2a
%if ( 0%{?_build_server} )
7f4c2a
%preun server
7f4c2a
if [ $1 -eq 0 ]; then
7f4c2a
    if [ -f %_init_glusterfsd ]; then
7f4c2a
        %_init_stop glusterfsd
7f4c2a
    fi
7f4c2a
    %_init_stop glusterd
7f4c2a
    if [ -f %_init_glusterfsd ]; then
7f4c2a
        %_init_disable glusterfsd
7f4c2a
    fi
7f4c2a
    %_init_disable glusterd
7f4c2a
fi
7f4c2a
if [ $1 -ge 1 ]; then
7f4c2a
    if [ -f %_init_glusterfsd ]; then
7f4c2a
        %_init_restart glusterfsd
7f4c2a
    fi
7f4c2a
    %_init_restart glusterd
7f4c2a
fi
7f4c2a
%endif
7f4c2a
7f4c2a
##-----------------------------------------------------------------------------
7f4c2a
## All %postun should be placed here and keep them sorted
7f4c2a
##
7f4c2a
%postun
7f4c2a
/sbin/ldconfig
7f4c2a
%if ( 0%{!?_without_syslog:1} )
7f4c2a
%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 )
7f4c2a
%_init_restart rsyslog
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
7f4c2a
%postun api
7f4c2a
/sbin/ldconfig
7f4c2a
7f4c2a
%if ( 0%{?_build_server} )
7f4c2a
%postun server
7f4c2a
%if (0%{?_with_firewalld:1})
7f4c2a
#reload service files if firewalld running
7f4c2a
if $(systemctl is-active firewalld 1>/dev/null 2>&1;; then
7f4c2a
    firewall-cmd  --reload
7f4c2a
fi
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
7f4c2a
7f4c2a
%postun libs
7f4c2a
/sbin/ldconfig
7f4c2a
7f4c2a
##-----------------------------------------------------------------------------
7f4c2a
## All files should be placed here and keep them grouped
7f4c2a
##
7f4c2a
%files
7f4c2a
# exclude extra-xlators files
7f4c2a
%if ( ! 0%{!?_without_extra_xlators:1} )
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/encryption/rot-13.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/mac-compat.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/prot_client.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/prot_dht.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/prot_server.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/quiesce.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/testing/features/template.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/testing/performance/symlink-cache.so
7f4c2a
%exclude %{python_sitelib}/*
7f4c2a
%endif
7f4c2a
# exclude regression-tests files
7f4c2a
%if ( ! 0%{!?_without_regression_tests:1} )
7f4c2a
%exclude %{_prefix}/share/glusterfs/run-tests.sh
7f4c2a
%exclude %{_prefix}/share/glusterfs/tests/*
7f4c2a
%endif
7f4c2a
%if ( ! 0%{?_build_server} )
7f4c2a
# exclude ganesha files
7f4c2a
%exclude %{_sysconfdir}/ganesha/*
7f4c2a
%exclude %{_libexecdir}/ganesha/*
7f4c2a
%exclude %{_prefix}/lib/ocf/*
7f4c2a
# exclude incrementalapi
7f4c2a
%exclude %{_libexecdir}/glusterfs/*
7f4c2a
%exclude %{_sbindir}/gfind_missing_files
7f4c2a
%exclude %{_libexecdir}/glusterfs/glusterfind
7f4c2a
%exclude %{_bindir}/glusterfind
7f4c2a
%exclude %{_libexecdir}/glusterfs/peer_add_secret_pub
7f4c2a
%{_sharedstatedir}/glusterd/hooks/1/delete/post/S57glusterfind-delete-post.py
7f4c2a
%exclude %{_sharedstatedir}/glusterd/hooks/1/delete/post/S57glusterfind-delete-post.pyc
7f4c2a
%exclude %{_sharedstatedir}/glusterd/hooks/1/delete/post/S57glusterfind-delete-post.pyo
7f4c2a
# exclude server files
7f4c2a
%exclude %{_sharedstatedir}/glusterd/*
7f4c2a
%exclude %{_sysconfdir}/glusterfs
7f4c2a
%exclude %{_sysconfdir}/glusterfs/glusterd.vol
7f4c2a
%exclude %{_sysconfdir}/glusterfs/glusterfs-georep-logrotate
7f4c2a
%exclude %{_sysconfdir}/glusterfs/glusterfs-logrotate
7f4c2a
%exclude %{_sysconfdir}/glusterfs/gluster-rsyslog-5.8.conf
7f4c2a
%exclude %{_sysconfdir}/glusterfs/gluster-rsyslog-7.2.conf
7f4c2a
%exclude %{_sysconfdir}/glusterfs/group-virt.example
7f4c2a
%exclude %{_sysconfdir}/glusterfs/logger.conf.example
7f4c2a
%exclude %_init_glusterd
7f4c2a
%exclude %{_sysconfdir}/sysconfig/glusterd
7f4c2a
%exclude %{_bindir}/glusterfind
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/cluster/pump.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/arbiter.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/bit-rot.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/bitrot-stub.so
7f4c2a
%if ( 0%{!?_without_tiering:1} )
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/changetimerecorder.so
7f4c2a
%endif
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/index.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/locks.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/posix*
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/snapview-server.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/marker.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/quota*
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/trash.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/upcall.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mgmt*
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs*
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/server*
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/storage*
7f4c2a
%if ( 0%{!?_without_tiering:1} )
7f4c2a
%exclude %{_libdir}/libgfdb.so.*
7f4c2a
%endif
7f4c2a
%exclude %{_sbindir}/gcron.py
7f4c2a
%exclude %{_sbindir}/glfsheal
7f4c2a
%exclude %{_sbindir}/glusterd
7f4c2a
%exclude %{_sbindir}/snap_scheduler.py
7f4c2a
%exclude %{_datadir}/glusterfs/scripts/stop-all-gluster-processes.sh
7f4c2a
#/usr/share/doc/glusterfs-server-3.7.0beta2/clear_xattrs.sh
7f4c2a
%exclude %{_localstatedir}/run/gluster
7f4c2a
%if 0%{?_tmpfilesdir:1}
7f4c2a
%exclude %{_tmpfilesdir}/gluster.conf
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
%doc ChangeLog COPYING-GPLV2 COPYING-LGPLV3 INSTALL README.md THANKS
7f4c2a
%if ( 0%{!?_without_syslog:1} )
7f4c2a
%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 )
7f4c2a
%{_sysconfdir}/rsyslog.d/gluster.conf.example
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
%{_mandir}/man8/*gluster*.8*
7f4c2a
%exclude %{_mandir}/man8/gluster.8*
7f4c2a
%dir %{_localstatedir}/log/glusterfs
7f4c2a
%if ( 0%{!?_without_rdma:1} )
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport/rdma*
7f4c2a
%endif
7f4c2a
%dir %{_datadir}/glusterfs/scripts
7f4c2a
%{_datadir}/glusterfs/scripts/post-upgrade-script-for-quota.sh
7f4c2a
%{_datadir}/glusterfs/scripts/pre-upgrade-script-for-quota.sh
7f4c2a
# xlators that are needed on the client- and on the server-side
7f4c2a
%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/auth
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/auth/addr.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/auth/login.so
7f4c2a
%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport/socket.so
7f4c2a
%dir %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/debug
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/debug/error-gen.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/debug/io-stats.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/debug/trace.so
7f4c2a
%if ( ! ( 0%{?rhel} && 0%{?rhel} < 6 ) )
7f4c2a
# RHEL-5 based distributions have a too old openssl
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/encryption/crypt.so
7f4c2a
%endif
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/access-control.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/barrier.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/cdc.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/changelog.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/gfid-access.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/read-only.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/shard.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/snapview-client.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/worm.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/meta.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/io-cache.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/io-threads.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/md-cache.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/open-behind.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/quick-read.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/read-ahead.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/readdir-ahead.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/stat-prefetch.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/performance/write-behind.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/system/posix-acl.so
7f4c2a
7f4c2a
7f4c2a
%files api
7f4c2a
%exclude %{_libdir}/*.so
7f4c2a
# libgfapi files
7f4c2a
%{_libdir}/libgfapi.*
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/api.so
7f4c2a
7f4c2a
%files api-devel
7f4c2a
%{_libdir}/pkgconfig/glusterfs-api.pc
7f4c2a
%{_libdir}/libgfapi.so
7f4c2a
%{_includedir}/glusterfs/api/*
7f4c2a
7f4c2a
%files cli
7f4c2a
%{_sbindir}/gluster
7f4c2a
%{_mandir}/man8/gluster.8*
7f4c2a
%{_sysconfdir}/bash_completion.d/gluster
7f4c2a
7f4c2a
%files devel
7f4c2a
%{_includedir}/glusterfs
7f4c2a
%exclude %{_includedir}/glusterfs/y.tab.h
7f4c2a
%exclude %{_includedir}/glusterfs/api
7f4c2a
%exclude %{_libdir}/libgfapi.so
7f4c2a
%if ( ! 0%{?_build_server} )
7f4c2a
%exclude %{_libdir}/libgfchangelog.so
7f4c2a
%endif
7f4c2a
%if ( 0%{!?_without_tiering:1} && ! 0%{?_build_server})
7f4c2a
%exclude %{_libdir}/libgfdb.so
7f4c2a
%endif
7f4c2a
%{_libdir}/*.so
7f4c2a
# Glupy Translator examples
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/debug-trace.*
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/helloworld.*
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/negative.*
7f4c2a
%if ( 0%{?_build_server} )
7f4c2a
%{_libdir}/pkgconfig/libgfchangelog.pc
7f4c2a
%else
7f4c2a
%exclude %{_libdir}/pkgconfig/libgfchangelog.pc
7f4c2a
%endif
7f4c2a
%if ( 0%{!?_without_tiering:1} && 0%{?_build_server})
7f4c2a
%{_libdir}/pkgconfig/libgfdb.pc
7f4c2a
%else
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} >= 6 )
7f4c2a
%exclude %{_libdir}/pkgconfig/libgfdb.pc
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
7f4c2a
%files client-xlators
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/cluster/*.so
7f4c2a
%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/cluster/pump.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/ganesha.so
7f4c2a
%if ( 0%{!?_without_qemu_block:1} )
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/qemu-block.so
7f4c2a
%endif
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/client.so
7f4c2a
7f4c2a
%if ( 0%{!?_without_extra_xlators:1} )
7f4c2a
%files extra-xlators
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/encryption/rot-13.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/mac-compat.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/prot_client.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/prot_dht.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/prot_server.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/quiesce.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/testing/features/template.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/testing/performance/symlink-cache.so
7f4c2a
# Glupy Python files
7f4c2a
%{python_sitelib}/gluster/glupy/*
7f4c2a
# Don't expect a .egg-info file on EL5
7f4c2a
%if ( ! ( 0%{?rhel} && 0%{?rhel} < 6 ) )
7f4c2a
%{python_sitelib}/glusterfs_glupy*.egg-info
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
7f4c2a
%files fuse
7f4c2a
# glusterfs is a symlink to glusterfsd, -server depends on -fuse.
7f4c2a
%{_sbindir}/glusterfs
7f4c2a
%{_sbindir}/glusterfsd
7f4c2a
%config(noreplace) %{_sysconfdir}/logrotate.d/glusterfs
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/fuse.so
7f4c2a
/sbin/mount.glusterfs
7f4c2a
%if ( 0%{!?_without_fusermount:1} )
7f4c2a
%{_bindir}/fusermount-glusterfs
7f4c2a
%endif
7f4c2a
%if ( 0%{_for_fedora_koji_builds} )
7f4c2a
%if ( 0%{?rhel} && 0%{?rhel} <= 5 )
7f4c2a
%{_sysconfdir}/sysconfig/modules/glusterfs-fuse.modules
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{?_build_server} )
7f4c2a
%files ganesha
7f4c2a
%{_sysconfdir}/ganesha/*
7f4c2a
%attr(0755,-,-) %{_libexecdir}/ganesha/*
7f4c2a
%attr(0755,-,-) %{_prefix}/lib/ocf/resource.d/heartbeat/*
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{?_build_server} )
7f4c2a
%if ( 0%{!?_without_georeplication:1} )
7f4c2a
%files geo-replication
7f4c2a
%config(noreplace) %{_sysconfdir}/logrotate.d/glusterfs-georep
7f4c2a
%{_libexecdir}/glusterfs/gsyncd
7f4c2a
%{_libexecdir}/glusterfs/python/syncdaemon/*
7f4c2a
%{_libexecdir}/glusterfs/gverify.sh
7f4c2a
%{_libexecdir}/glusterfs/set_geo_rep_pem_keys.sh
7f4c2a
%{_libexecdir}/glusterfs/peer_gsec_create
7f4c2a
%{_libexecdir}/glusterfs/peer_mountbroker
7f4c2a
%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/geo-replication
7f4c2a
%{_sharedstatedir}/glusterd/hooks/1/gsync-create/post/S56glusterd-geo-rep-create-post.sh
7f4c2a
%{_datadir}/glusterfs/scripts/get-gfid.sh
7f4c2a
%{_datadir}/glusterfs/scripts/slave-upgrade.sh
7f4c2a
%{_datadir}/glusterfs/scripts/gsync-upgrade.sh
7f4c2a
%{_datadir}/glusterfs/scripts/generate-gfid-file.sh
7f4c2a
%{_datadir}/glusterfs/scripts/gsync-sync-gfid
7f4c2a
%ghost %attr(0644,-,-) %{_sharedstatedir}/glusterd/geo-replication/gsyncd_template.conf
7f4c2a
%endif
7f4c2a
%{_libexecdir}/glusterfs/gfind_missing_files
7f4c2a
%{_sbindir}/gfind_missing_files
7f4c2a
%endif
7f4c2a
7f4c2a
%files libs
7f4c2a
%{_libdir}/*.so.*
7f4c2a
%exclude %{_libdir}/libgfapi.*
7f4c2a
%if ( 0%{!?_without_tiering:1} )
7f4c2a
# libgfdb is only needed server-side
7f4c2a
%exclude %{_libdir}/libgfdb.*
7f4c2a
%endif
7f4c2a
7f4c2a
%files -n python-gluster
7f4c2a
# introducing glusterfs module in site packages.
7f4c2a
# so that all other gluster submodules can reside in the same namespace.
7f4c2a
%{python_sitelib}/gluster/__init__.*
7f4c2a
7f4c2a
%if ( 0%{!?_without_rdma:1} )
7f4c2a
%files rdma
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport/rdma*
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{?_build_server} )
7f4c2a
%if ( 0%{!?_without_regression_tests:1} )
7f4c2a
%files regression-tests
7f4c2a
%{_prefix}/share/glusterfs/run-tests.sh
7f4c2a
%{_prefix}/share/glusterfs/tests
7f4c2a
%exclude %{_prefix}/share/glusterfs/tests/basic/rpm.t
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{?_build_server} )
7f4c2a
%if ( 0%{!?_without_ocf:1} )
7f4c2a
%files resource-agents
7f4c2a
# /usr/lib is the standard for OCF, also on x86_64
7f4c2a
%{_prefix}/lib/ocf/resource.d/glusterfs
7f4c2a
%endif
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{?_build_server} )
7f4c2a
%files server
7f4c2a
%exclude %{_sharedstatedir}/glusterd/hooks/1/gsync-create/post/S56glusterd-geo-rep-create-post.sh
7f4c2a
%doc extras/clear_xattrs.sh
7f4c2a
%config(noreplace) %{_sysconfdir}/sysconfig/glusterd
7f4c2a
%config(noreplace) %{_sysconfdir}/glusterfs
7f4c2a
%dir %{_localstatedir}/run/gluster
7f4c2a
%if 0%{?_tmpfilesdir:1}
7f4c2a
%{_tmpfilesdir}/gluster.conf
7f4c2a
%endif
7f4c2a
%dir %{_sharedstatedir}/glusterd
7f4c2a
%{_sharedstatedir}/glusterd/*
7f4c2a
%dir %{_sharedstatedir}/glusterd/groups
7f4c2a
%config(noreplace) %{_sharedstatedir}/glusterd/groups/virt
7f4c2a
# Legacy configs
7f4c2a
%if ( 0%{_for_fedora_koji_builds} )
7f4c2a
%config(noreplace) %{_sysconfdir}/sysconfig/glusterfsd
7f4c2a
%endif
7f4c2a
%config %{_sharedstatedir}/glusterd/hooks/1/add-brick/post/disabled-quota-root-xattr-heal.sh
7f4c2a
%config %{_sharedstatedir}/glusterd/hooks/1/add-brick/pre/S28Quota-enable-root-xattr-heal.sh
7f4c2a
%config %{_sharedstatedir}/glusterd/hooks/1/set/post/S30samba-set.sh
7f4c2a
%config %{_sharedstatedir}/glusterd/hooks/1/set/post/S32gluster_enable_shared_storage.sh
7f4c2a
%config %{_sharedstatedir}/glusterd/hooks/1/start/post/S29CTDBsetup.sh
7f4c2a
%config %{_sharedstatedir}/glusterd/hooks/1/start/post/S30samba-start.sh
7f4c2a
%config %{_sharedstatedir}/glusterd/hooks/1/start/post/S31ganesha-start.sh
7f4c2a
%config %{_sharedstatedir}/glusterd/hooks/1/stop/pre/S30samba-stop.sh
7f4c2a
%config %{_sharedstatedir}/glusterd/hooks/1/stop/pre/S29CTDB-teardown.sh
7f4c2a
%config %{_sharedstatedir}/glusterd/hooks/1/reset/post/S31ganesha-reset.sh
7f4c2a
# init files
7f4c2a
%_init_glusterd
7f4c2a
%if ( 0%{_for_fedora_koji_builds} )
7f4c2a
%_init_glusterfsd
7f4c2a
%endif
7f4c2a
# binaries
7f4c2a
%{_sbindir}/glusterd
7f4c2a
%{_sbindir}/glfsheal
7f4c2a
# {_sbindir}/glusterfsd is the actual binary, but glusterfs (client) is a
7f4c2a
# symlink. The binary itself (and symlink) are part of the glusterfs-fuse
7f4c2a
# package, because glusterfs-server depends on that anyway.
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/cluster/pump.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/arbiter.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/bit-rot.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/bitrot-stub.so
7f4c2a
%if ( 0%{!?_without_tiering:1} )
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/changetimerecorder.so
7f4c2a
%endif
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/index.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/locks.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/posix*
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/snapview-server.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/marker.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/quota*
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/trash.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/upcall.so
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mgmt*
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs*
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/server*
7f4c2a
%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/storage*
7f4c2a
%if ( 0%{!?_without_tiering:1} )
7f4c2a
%{_libdir}/libgfdb.so.*
7f4c2a
%endif
7f4c2a
7f4c2a
#snap_scheduler
7f4c2a
%{_sbindir}/snap_scheduler.py
7f4c2a
%{_sbindir}/gcron.py
7f4c2a
7f4c2a
#hookscripts
7f4c2a
%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks
7f4c2a
%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1
7f4c2a
%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick
7f4c2a
%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick/post
7f4c2a
%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/add-brick/pre
7f4c2a
%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/set
7f4c2a
%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/set/post
7f4c2a
%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start
7f4c2a
%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/start/post
7f4c2a
%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop
7f4c2a
%dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/hooks/1/stop/pre
7f4c2a
7f4c2a
%ghost %attr(0644,-,-) %config(noreplace) %{_sharedstatedir}/glusterd/glusterd.info
7f4c2a
%ghost %attr(0600,-,-) %{_sharedstatedir}/glusterd/options
7f4c2a
%ghost %attr(0600,-,-) %{_sharedstatedir}/glusterd/nfs/nfs-server.vol
7f4c2a
%ghost %attr(0600,-,-) %{_sharedstatedir}/glusterd/nfs/run/nfs.pid
7f4c2a
7f4c2a
# Extra utility script
7f4c2a
%{_datadir}/glusterfs/scripts/stop-all-gluster-processes.sh
7f4c2a
7f4c2a
# Incrementalapi
7f4c2a
%{_libexecdir}/glusterfs/glusterfind
7f4c2a
%{_bindir}/glusterfind
7f4c2a
%{_libexecdir}/glusterfs/peer_add_secret_pub
7f4c2a
%endif
7f4c2a
7f4c2a
%if ( 0%{?_with_firewalld:1} )
7f4c2a
/usr/lib/firewalld/services/glusterfs.xml
7f4c2a
%endif
7f4c2a
7f4c2a
7f4c2a
##-----------------------------------------------------------------------------
7f4c2a
## All %pretrans should be placed here and keep them sorted
7f4c2a
##
7f4c2a
%if 0%{?_build_server}
7f4c2a
%pretrans -p <lua>
7f4c2a
if not posix.access("/bin/bash", "x") then
7f4c2a
    -- initial installation, no shell, no running glusterfsd
7f4c2a
    return 0
7f4c2a
end
7f4c2a
7f4c2a
-- TODO: move this completely to a lua script
7f4c2a
-- For now, we write a temporary bash script and execute that.
7f4c2a
7f4c2a
script = [[#!/bin/sh
7f4c2a
pidof -c -o %PPID -x glusterfsd &>/dev/null
7f4c2a
7f4c2a
if [ $? -eq 0 ]; then
7f4c2a
   pushd . > /dev/null 2>&1
7f4c2a
   for volume in /var/lib/glusterd/vols/*; do cd $volume;
7f4c2a
       vol_type=`grep '^type=' info | awk -F'=' '{print $2}'`
7f4c2a
       volume_started=`grep '^status=' info | awk -F'=' '{print $2}'`
7f4c2a
       if [ $vol_type -eq 0 ] && [ $volume_started -eq 1 ] ; then
7f4c2a
          echo "ERROR: Distribute volumes detected. In-service rolling upgrade requires distribute volume(s) to be stopped."
7f4c2a
          echo "ERROR: Please stop distribute volume(s) before proceeding... exiting!"
7f4c2a
          exit 1;
7f4c2a
       fi
7f4c2a
   done
7f4c2a
7f4c2a
   popd > /dev/null 2>&1
7f4c2a
   echo "WARNING: Updating glusterfs requires its processes to be killed. This action does NOT incur downtime."
7f4c2a
   echo "WARNING: Ensure to wait for the upgraded server to finish healing before proceeding."
7f4c2a
   echo "WARNING: Refer upgrade section of install guide for more details"
7f4c2a
   echo "Please run # service glusterd stop; pkill glusterfs; pkill glusterfsd; pkill gsyncd.py;"
7f4c2a
   exit 1;
7f4c2a
fi
7f4c2a
]]
7f4c2a
7f4c2a
-- rpm in RHEL5 does not have os.tmpname()
7f4c2a
-- io.tmpfile() can not be resolved to a filename to pass to bash :-/
7f4c2a
tmpname = "/tmp/glusterfs_pretrans_" .. os.date("%s")
7f4c2a
tmpfile = io.open(tmpname, "w")
7f4c2a
tmpfile:write(script)
7f4c2a
tmpfile:close()
7f4c2a
ok, how, val = os.execute("/bin/bash " .. tmpname)
7f4c2a
os.remove(tmpname)
7f4c2a
if not (ok == 0) then
7f4c2a
   error("Detected running glusterfs processes", ok)
7f4c2a
end
7f4c2a
7f4c2a
7f4c2a
7f4c2a
%pretrans api -p <lua>
7f4c2a
if not posix.access("/bin/bash", "x") then
7f4c2a
    -- initial installation, no shell, no running glusterfsd
7f4c2a
    return 0
7f4c2a
end
7f4c2a
7f4c2a
-- TODO: move this completely to a lua script
7f4c2a
-- For now, we write a temporary bash script and execute that.
7f4c2a
7f4c2a
script = [[#!/bin/sh
7f4c2a
pidof -c -o %PPID -x glusterfsd &>/dev/null
7f4c2a
7f4c2a
if [ $? -eq 0 ]; then
7f4c2a
   pushd . > /dev/null 2>&1
7f4c2a
   for volume in /var/lib/glusterd/vols/*; do cd $volume;
7f4c2a
       vol_type=`grep '^type=' info | awk -F'=' '{print $2}'`
7f4c2a
       volume_started=`grep '^status=' info | awk -F'=' '{print $2}'`
7f4c2a
       if [ $vol_type -eq 0 ] && [ $volume_started -eq 1 ] ; then
7f4c2a
          exit 1;
7f4c2a
       fi
7f4c2a
   done
7f4c2a
7f4c2a
   popd > /dev/null 2>&1
7f4c2a
   exit 1;
7f4c2a
fi
7f4c2a
]]
7f4c2a
7f4c2a
-- rpm in RHEL5 does not have os.tmpname()
7f4c2a
-- io.tmpfile() can not be resolved to a filename to pass to bash :-/
7f4c2a
tmpname = "/tmp/glusterfs-api_pretrans_" .. os.date("%s")
7f4c2a
tmpfile = io.open(tmpname, "w")
7f4c2a
tmpfile:write(script)
7f4c2a
tmpfile:close()
7f4c2a
ok, how, val = os.execute("/bin/bash " .. tmpname)
7f4c2a
os.remove(tmpname)
7f4c2a
if not (ok == 0) then
7f4c2a
   error("Detected running glusterfs processes", ok)
7f4c2a
end
7f4c2a
7f4c2a
7f4c2a
7f4c2a
%pretrans api-devel -p <lua>
7f4c2a
if not posix.access("/bin/bash", "x") then
7f4c2a
    -- initial installation, no shell, no running glusterfsd
7f4c2a
    return 0
7f4c2a
end
7f4c2a
7f4c2a
-- TODO: move this completely to a lua script
7f4c2a
-- For now, we write a temporary bash script and execute that.
7f4c2a
7f4c2a
script = [[#!/bin/sh
7f4c2a
pidof -c -o %PPID -x glusterfsd &>/dev/null
7f4c2a
7f4c2a
if [ $? -eq 0 ]; then
7f4c2a
   pushd . > /dev/null 2>&1
7f4c2a
   for volume in /var/lib/glusterd/vols/*; do cd $volume;
7f4c2a
       vol_type=`grep '^type=' info | awk -F'=' '{print $2}'`
7f4c2a
       volume_started=`grep '^status=' info | awk -F'=' '{print $2}'`
7f4c2a
       if [ $vol_type -eq 0 ] && [ $volume_started -eq 1 ] ; then
7f4c2a
          exit 1;
7f4c2a
       fi
7f4c2a
   done
7f4c2a
7f4c2a
   popd > /dev/null 2>&1
7f4c2a
   exit 1;
7f4c2a
fi
7f4c2a
]]
7f4c2a
7f4c2a
-- rpm in RHEL5 does not have os.tmpname()
7f4c2a
-- io.tmpfile() can not be resolved to a filename to pass to bash :-/
7f4c2a
tmpname = "/tmp/glusterfs-api-devel_pretrans_" .. os.date("%s")
7f4c2a
tmpfile = io.open(tmpname, "w")
7f4c2a
tmpfile:write(script)
7f4c2a
tmpfile:close()
7f4c2a
ok, how, val = os.execute("/bin/bash " .. tmpname)
7f4c2a
os.remove(tmpname)
7f4c2a
if not (ok == 0) then
7f4c2a
   error("Detected running glusterfs processes", ok)
7f4c2a
end
7f4c2a
7f4c2a
7f4c2a
7f4c2a
%pretrans cli -p <lua>
7f4c2a
if not posix.access("/bin/bash", "x") then
7f4c2a
    -- initial installation, no shell, no running glusterfsd
7f4c2a
    return 0
7f4c2a
end
7f4c2a
7f4c2a
-- TODO: move this completely to a lua script
7f4c2a
-- For now, we write a temporary bash script and execute that.
7f4c2a
7f4c2a
script = [[#!/bin/sh
7f4c2a
pidof -c -o %PPID -x glusterfsd &>/dev/null
7f4c2a
7f4c2a
if [ $? -eq 0 ]; then
7f4c2a
   pushd . > /dev/null 2>&1
7f4c2a
   for volume in /var/lib/glusterd/vols/*; do cd $volume;
7f4c2a
       vol_type=`grep '^type=' info | awk -F'=' '{print $2}'`
7f4c2a
       volume_started=`grep '^status=' info | awk -F'=' '{print $2}'`
7f4c2a
       if [ $vol_type -eq 0 ] && [ $volume_started -eq 1 ] ; then
7f4c2a
          exit 1;
7f4c2a
       fi
7f4c2a
   done
7f4c2a
7f4c2a
   popd > /dev/null 2>&1
7f4c2a
   exit 1;
7f4c2a
fi
7f4c2a
]]
7f4c2a
7f4c2a
-- rpm in RHEL5 does not have os.tmpname()
7f4c2a
-- io.tmpfile() can not be resolved to a filename to pass to bash :-/
7f4c2a
tmpname = "/tmp/glusterfs-cli_pretrans_" .. os.date("%s")
7f4c2a
tmpfile = io.open(tmpname, "w")
7f4c2a
tmpfile:write(script)
7f4c2a
tmpfile:close()
7f4c2a
ok, how, val = os.execute("/bin/bash " .. tmpname)
7f4c2a
os.remove(tmpname)
7f4c2a
if not (ok == 0) then
7f4c2a
   error("Detected running glusterfs processes", ok)
7f4c2a
end
7f4c2a
7f4c2a
7f4c2a
7f4c2a
%pretrans client-xlators -p <lua>
7f4c2a
if not posix.access("/bin/bash", "x") then
7f4c2a
    -- initial installation, no shell, no running glusterfsd
7f4c2a
    return 0
7f4c2a
end
7f4c2a
7f4c2a
-- TODO: move this completely to a lua script
7f4c2a
-- For now, we write a temporary bash script and execute that.
7f4c2a
7f4c2a
script = [[#!/bin/sh
7f4c2a
pidof -c -o %PPID -x glusterfsd &>/dev/null
7f4c2a
7f4c2a
if [ $? -eq 0 ]; then
7f4c2a
   pushd . > /dev/null 2>&1
7f4c2a
   for volume in /var/lib/glusterd/vols/*; do cd $volume;
7f4c2a
       vol_type=`grep '^type=' info | awk -F'=' '{print $2}'`
7f4c2a
       volume_started=`grep '^status=' info | awk -F'=' '{print $2}'`
7f4c2a
       if [ $vol_type -eq 0 ] && [ $volume_started -eq 1 ] ; then
7f4c2a
          exit 1;
7f4c2a
       fi
7f4c2a
   done
7f4c2a
7f4c2a
   popd > /dev/null 2>&1
7f4c2a
   exit 1;
7f4c2a
fi
7f4c2a
]]
7f4c2a
7f4c2a
-- rpm in RHEL5 does not have os.tmpname()
7f4c2a
-- io.tmpfile() can not be resolved to a filename to pass to bash :-/
7f4c2a
tmpname = "/tmp/glusterfs-client-xlators_pretrans_" .. os.date("%s")
7f4c2a
tmpfile = io.open(tmpname, "w")
7f4c2a
tmpfile:write(script)
7f4c2a
tmpfile:close()
7f4c2a
ok, how, val = os.execute("/bin/bash " .. tmpname)
7f4c2a
os.remove(tmpname)
7f4c2a
if not (ok == 0) then
7f4c2a
   error("Detected running glusterfs processes", ok)
7f4c2a
end
7f4c2a
7f4c2a
7f4c2a
7f4c2a
%pretrans devel -p <lua>
7f4c2a
if not posix.access("/bin/bash", "x") then
7f4c2a
    -- initial installation, no shell, no running glusterfsd
7f4c2a
    return 0
7f4c2a
end
7f4c2a
7f4c2a
-- TODO: move this completely to a lua script
7f4c2a
-- For now, we write a temporary bash script and execute that.
7f4c2a
7f4c2a
script = [[#!/bin/sh
7f4c2a
pidof -c -o %PPID -x glusterfsd &>/dev/null
7f4c2a
7f4c2a
if [ $? -eq 0 ]; then
7f4c2a
   pushd . > /dev/null 2>&1
7f4c2a
   for volume in /var/lib/glusterd/vols/*; do cd $volume;
7f4c2a
       vol_type=`grep '^type=' info | awk -F'=' '{print $2}'`
7f4c2a
       volume_started=`grep '^status=' info | awk -F'=' '{print $2}'`
7f4c2a
       if [ $vol_type -eq 0 ] && [ $volume_started -eq 1 ] ; then
7f4c2a
          exit 1;
7f4c2a
       fi
7f4c2a
   done
7f4c2a
7f4c2a
   popd > /dev/null 2>&1
7f4c2a
   exit 1;
7f4c2a
fi
7f4c2a
]]
7f4c2a
7f4c2a
-- rpm in RHEL5 does not have os.tmpname()
7f4c2a
-- io.tmpfile() can not be resolved to a filename to pass to bash :-/
7f4c2a
tmpname = "/tmp/glusterfs-devel_pretrans_" .. os.date("%s")
7f4c2a
tmpfile = io.open(tmpname, "w")
7f4c2a
tmpfile:write(script)
7f4c2a
tmpfile:close()
7f4c2a
ok, how, val = os.execute("/bin/bash " .. tmpname)
7f4c2a
os.remove(tmpname)
7f4c2a
if not (ok == 0) then
7f4c2a
   error("Detected running glusterfs processes", ok)
7f4c2a
end
7f4c2a
7f4c2a
7f4c2a
7f4c2a
%pretrans fuse -p <lua>
7f4c2a
if not posix.access("/bin/bash", "x") then
7f4c2a
    -- initial installation, no shell, no running glusterfsd
7f4c2a
    return 0
7f4c2a
end
7f4c2a
7f4c2a
-- TODO: move this completely to a lua script
7f4c2a
-- For now, we write a temporary bash script and execute that.
7f4c2a
7f4c2a
script = [[#!/bin/sh
7f4c2a
pidof -c -o %PPID -x glusterfsd &>/dev/null
7f4c2a
7f4c2a
if [ $? -eq 0 ]; then
7f4c2a
   pushd . > /dev/null 2>&1
7f4c2a
   for volume in /var/lib/glusterd/vols/*; do cd $volume;
7f4c2a
       vol_type=`grep '^type=' info | awk -F'=' '{print $2}'`
7f4c2a
       volume_started=`grep '^status=' info | awk -F'=' '{print $2}'`
7f4c2a
       if [ $vol_type -eq 0 ] && [ $volume_started -eq 1 ] ; then
7f4c2a
          exit 1;
7f4c2a
       fi
7f4c2a
   done
7f4c2a
7f4c2a
   popd > /dev/null 2>&1
7f4c2a
   exit 1;
7f4c2a
fi
7f4c2a
]]
7f4c2a
7f4c2a
-- rpm in RHEL5 does not have os.tmpname()
7f4c2a
-- io.tmpfile() can not be resolved to a filename to pass to bash :-/
7f4c2a
tmpname = "/tmp/glusterfs-fuse_pretrans_" .. os.date("%s")
7f4c2a
tmpfile = io.open(tmpname, "w")
7f4c2a
tmpfile:write(script)
7f4c2a
tmpfile:close()
7f4c2a
ok, how, val = os.execute("/bin/bash " .. tmpname)
7f4c2a
os.remove(tmpname)
7f4c2a
if not (ok == 0) then
7f4c2a
   error("Detected running glusterfs processes", ok)
7f4c2a
end
7f4c2a
7f4c2a
7f4c2a
7f4c2a
%pretrans ganesha -p <lua>
7f4c2a
if not posix.access("/bin/bash", "x") then
7f4c2a
    -- initial installation, no shell, no running glusterfsd
7f4c2a
    return 0
7f4c2a
end
7f4c2a
7f4c2a
-- TODO: move this completely to a lua script
7f4c2a
-- For now, we write a temporary bash script and execute that.
7f4c2a
7f4c2a
script = [[#!/bin/sh
7f4c2a
pidof -c -o %PPID -x glusterfsd &>/dev/null
7f4c2a
7f4c2a
if [ $? -eq 0 ]; then
7f4c2a
   pushd . > /dev/null 2>&1
7f4c2a
   for volume in /var/lib/glusterd/vols/*; do cd $volume;
7f4c2a
       vol_type=`grep '^type=' info | awk -F'=' '{print $2}'`
7f4c2a
       volume_started=`grep '^status=' info | awk -F'=' '{print $2}'`
7f4c2a
       if [ $vol_type -eq 0 ] && [ $volume_started -eq 1 ] ; then
7f4c2a
          exit 1;
7f4c2a
       fi
7f4c2a
   done
7f4c2a
7f4c2a
   popd > /dev/null 2>&1
7f4c2a
   exit 1;
7f4c2a
fi
7f4c2a
]]
7f4c2a
7f4c2a
-- rpm in RHEL5 does not have os.tmpname()
7f4c2a
-- io.tmpfile() can not be resolved to a filename to pass to bash :-/
7f4c2a
tmpname = "/tmp/glusterfs-ganesha_pretrans_" .. os.date("%s")
7f4c2a
tmpfile = io.open(tmpname, "w")
7f4c2a
tmpfile:write(script)
7f4c2a
tmpfile:close()
7f4c2a
ok, how, val = os.execute("/bin/bash " .. tmpname)
7f4c2a
os.remove(tmpname)
7f4c2a
if not (ok == 0) then
7f4c2a
   error("Detected running glusterfs processes", ok)
7f4c2a
end
7f4c2a
7f4c2a
7f4c2a
7f4c2a
%if ( 0%{!?_without_georeplication:1} )
7f4c2a
%pretrans geo-replication -p <lua>
7f4c2a
if not posix.access("/bin/bash", "x") then
7f4c2a
    -- initial installation, no shell, no running glusterfsd
7f4c2a
    return 0
7f4c2a
end
7f4c2a
7f4c2a
-- TODO: move this completely to a lua script
7f4c2a
-- For now, we write a temporary bash script and execute that.
7f4c2a
7f4c2a
script = [[#!/bin/sh
7f4c2a
pidof -c -o %PPID -x glusterfsd &>/dev/null
7f4c2a
7f4c2a
if [ $? -eq 0 ]; then
7f4c2a
   pushd . > /dev/null 2>&1
7f4c2a
   for volume in /var/lib/glusterd/vols/*; do cd $volume;
7f4c2a
       vol_type=`grep '^type=' info | awk -F'=' '{print $2}'`
7f4c2a
       volume_started=`grep '^status=' info | awk -F'=' '{print $2}'`
7f4c2a
       if [ $vol_type -eq 0 ] && [ $volume_started -eq 1 ] ; then
7f4c2a
          exit 1;
7f4c2a
       fi
7f4c2a
   done
7f4c2a
7f4c2a
   popd > /dev/null 2>&1
7f4c2a
   exit 1;
7f4c2a
fi
7f4c2a
]]
7f4c2a
7f4c2a
-- rpm in RHEL5 does not have os.tmpname()
7f4c2a
-- io.tmpfile() can not be resolved to a filename to pass to bash :-/
7f4c2a
tmpname = "/tmp/glusterfs-geo-replication_pretrans_" .. os.date("%s")
7f4c2a
tmpfile = io.open(tmpname, "w")
7f4c2a
tmpfile:write(script)
7f4c2a
tmpfile:close()
7f4c2a
ok, how, val = os.execute("/bin/bash " .. tmpname)
7f4c2a
os.remove(tmpname)
7f4c2a
if not (ok == 0) then
7f4c2a
   error("Detected running glusterfs processes", ok)
7f4c2a
end
7f4c2a
%endif
7f4c2a
7f4c2a
7f4c2a
7f4c2a
%pretrans libs -p <lua>
7f4c2a
if not posix.access("/bin/bash", "x") then
7f4c2a
    -- initial installation, no shell, no running glusterfsd
7f4c2a
    return 0
7f4c2a
end
7f4c2a
7f4c2a
-- TODO: move this completely to a lua script
7f4c2a
-- For now, we write a temporary bash script and execute that.
7f4c2a
7f4c2a
script = [[#!/bin/sh
7f4c2a
pidof -c -o %PPID -x glusterfsd &>/dev/null
7f4c2a
7f4c2a
if [ $? -eq 0 ]; then
7f4c2a
   pushd . > /dev/null 2>&1
7f4c2a
   for volume in /var/lib/glusterd/vols/*; do cd $volume;
7f4c2a
       vol_type=`grep '^type=' info | awk -F'=' '{print $2}'`
7f4c2a
       volume_started=`grep '^status=' info | awk -F'=' '{print $2}'`
7f4c2a
       if [ $vol_type -eq 0 ] && [ $volume_started -eq 1 ] ; then
7f4c2a
          exit 1;
7f4c2a
       fi
7f4c2a
   done
7f4c2a
7f4c2a
   popd > /dev/null 2>&1
7f4c2a
   exit 1;
7f4c2a
fi
7f4c2a
]]
7f4c2a
7f4c2a
-- rpm in RHEL5 does not have os.tmpname()
7f4c2a
-- io.tmpfile() can not be resolved to a filename to pass to bash :-/
7f4c2a
tmpname = "/tmp/glusterfs-libs_pretrans_" .. os.date("%s")
7f4c2a
tmpfile = io.open(tmpname, "w")
7f4c2a
tmpfile:write(script)
7f4c2a
tmpfile:close()
7f4c2a
ok, how, val = os.execute("/bin/bash " .. tmpname)
7f4c2a
os.remove(tmpname)
7f4c2a
if not (ok == 0) then
7f4c2a
   error("Detected running glusterfs processes", ok)
7f4c2a
end
7f4c2a
7f4c2a
7f4c2a
7f4c2a
%pretrans -n python-gluster -p <lua>
7f4c2a
if not posix.access("/bin/bash", "x") then
7f4c2a
    -- initial installation, no shell, no running glusterfsd
7f4c2a
    return 0
7f4c2a
end
7f4c2a
7f4c2a
-- TODO: move this completely to a lua script
7f4c2a
-- For now, we write a temporary bash script and execute that.
7f4c2a
7f4c2a
script = [[#!/bin/sh
7f4c2a
pidof -c -o %PPID -x glusterfsd &>/dev/null
7f4c2a
7f4c2a
if [ $? -eq 0 ]; then
7f4c2a
   pushd . > /dev/null 2>&1
7f4c2a
   for volume in /var/lib/glusterd/vols/*; do cd $volume;
7f4c2a
       vol_type=`grep '^type=' info | awk -F'=' '{print $2}'`
7f4c2a
       volume_started=`grep '^status=' info | awk -F'=' '{print $2}'`
7f4c2a
       if [ $vol_type -eq 0 ] && [ $volume_started -eq 1 ] ; then
7f4c2a
          exit 1;
7f4c2a
       fi
7f4c2a
   done
7f4c2a
7f4c2a
   popd > /dev/null 2>&1
7f4c2a
   exit 1;
7f4c2a
fi
7f4c2a
]]
7f4c2a
7f4c2a
-- rpm in RHEL5 does not have os.tmpname()
7f4c2a
-- io.tmpfile() can not be resolved to a filename to pass to bash :-/
7f4c2a
tmpname = "/tmp/python-gluster_pretrans_" .. os.date("%s")
7f4c2a
tmpfile = io.open(tmpname, "w")
7f4c2a
tmpfile:write(script)
7f4c2a
tmpfile:close()
7f4c2a
ok, how, val = os.execute("/bin/bash " .. tmpname)
7f4c2a
os.remove(tmpname)
7f4c2a
if not (ok == 0) then
7f4c2a
   error("Detected running glusterfs processes", ok)
7f4c2a
end
7f4c2a
7f4c2a
7f4c2a
7f4c2a
%if ( 0%{!?_without_rdma:1} )
7f4c2a
%pretrans rdma -p <lua>
7f4c2a
if not posix.access("/bin/bash", "x") then
7f4c2a
    -- initial installation, no shell, no running glusterfsd
7f4c2a
    return 0
7f4c2a
end
7f4c2a
7f4c2a
-- TODO: move this completely to a lua script
7f4c2a
-- For now, we write a temporary bash script and execute that.
7f4c2a
7f4c2a
script = [[#!/bin/sh
7f4c2a
pidof -c -o %PPID -x glusterfsd &>/dev/null
7f4c2a
7f4c2a
if [ $? -eq 0 ]; then
7f4c2a
   pushd . > /dev/null 2>&1
7f4c2a
   for volume in /var/lib/glusterd/vols/*; do cd $volume;
7f4c2a
       vol_type=`grep '^type=' info | awk -F'=' '{print $2}'`
7f4c2a
       volume_started=`grep '^status=' info | awk -F'=' '{print $2}'`
7f4c2a
       if [ $vol_type -eq 0 ] && [ $volume_started -eq 1 ] ; then
7f4c2a
          exit 1;
7f4c2a
       fi
7f4c2a
   done
7f4c2a
7f4c2a
   popd > /dev/null 2>&1
7f4c2a
   exit 1;
7f4c2a
fi
7f4c2a
]]
7f4c2a
7f4c2a
-- rpm in RHEL5 does not have os.tmpname()
7f4c2a
-- io.tmpfile() can not be resolved to a filename to pass to bash :-/
7f4c2a
tmpname = "/tmp/glusterfs-rdma_pretrans_" .. os.date("%s")
7f4c2a
tmpfile = io.open(tmpname, "w")
7f4c2a
tmpfile:write(script)
7f4c2a
tmpfile:close()
7f4c2a
ok, how, val = os.execute("/bin/bash " .. tmpname)
7f4c2a
os.remove(tmpname)
7f4c2a
if not (ok == 0) then
7f4c2a
   error("Detected running glusterfs processes", ok)
7f4c2a
end
7f4c2a
%endif
7f4c2a
7f4c2a
7f4c2a
7f4c2a
%if ( 0%{!?_without_ocf:1} )
7f4c2a
%pretrans resource-agents -p <lua>
7f4c2a
if not posix.access("/bin/bash", "x") then
7f4c2a
    -- initial installation, no shell, no running glusterfsd
7f4c2a
    return 0
7f4c2a
end
7f4c2a
7f4c2a
-- TODO: move this completely to a lua script
7f4c2a
-- For now, we write a temporary bash script and execute that.
7f4c2a
7f4c2a
script = [[#!/bin/sh
7f4c2a
pidof -c -o %PPID -x glusterfsd &>/dev/null
7f4c2a
7f4c2a
if [ $? -eq 0 ]; then
7f4c2a
   pushd . > /dev/null 2>&1
7f4c2a
   for volume in /var/lib/glusterd/vols/*; do cd $volume;
7f4c2a
       vol_type=`grep '^type=' info | awk -F'=' '{print $2}'`
7f4c2a
       volume_started=`grep '^status=' info | awk -F'=' '{print $2}'`
7f4c2a
       if [ $vol_type -eq 0 ] && [ $volume_started -eq 1 ] ; then
7f4c2a
          exit 1;
7f4c2a
       fi
7f4c2a
   done
7f4c2a
7f4c2a
   popd > /dev/null 2>&1
7f4c2a
   exit 1;
7f4c2a
fi
7f4c2a
]]
7f4c2a
7f4c2a
-- rpm in RHEL5 does not have os.tmpname()
7f4c2a
-- io.tmpfile() can not be resolved to a filename to pass to bash :-/
7f4c2a
tmpname = "/tmp/glusterfs-resource-agents_pretrans_" .. os.date("%s")
7f4c2a
tmpfile = io.open(tmpname, "w")
7f4c2a
tmpfile:write(script)
7f4c2a
tmpfile:close()
7f4c2a
ok, how, val = os.execute("/bin/bash " .. tmpname)
7f4c2a
os.remove(tmpname)
7f4c2a
if not (ok == 0) then
7f4c2a
   error("Detected running glusterfs processes", ok)
7f4c2a
end
7f4c2a
%endif
7f4c2a
7f4c2a
7f4c2a
7f4c2a
%pretrans server -p <lua>
7f4c2a
if not posix.access("/bin/bash", "x") then
7f4c2a
    -- initial installation, no shell, no running glusterfsd
7f4c2a
    return 0
7f4c2a
end
7f4c2a
7f4c2a
-- TODO: move this completely to a lua script
7f4c2a
-- For now, we write a temporary bash script and execute that.
7f4c2a
7f4c2a
script = [[#!/bin/sh
7f4c2a
pidof -c -o %PPID -x glusterfsd &>/dev/null
7f4c2a
7f4c2a
if [ $? -eq 0 ]; then
7f4c2a
   pushd . > /dev/null 2>&1
7f4c2a
   for volume in /var/lib/glusterd/vols/*; do cd $volume;
7f4c2a
       vol_type=`grep '^type=' info | awk -F'=' '{print $2}'`
7f4c2a
       volume_started=`grep '^status=' info | awk -F'=' '{print $2}'`
7f4c2a
       if [ $vol_type -eq 0 ] && [ $volume_started -eq 1 ] ; then
7f4c2a
          exit 1;
7f4c2a
       fi
7f4c2a
   done
7f4c2a
7f4c2a
   popd > /dev/null 2>&1
7f4c2a
   exit 1;
7f4c2a
fi
7f4c2a
]]
7f4c2a
7f4c2a
-- rpm in RHEL5 does not have os.tmpname()
7f4c2a
-- io.tmpfile() can not be resolved to a filename to pass to bash :-/
7f4c2a
tmpname = "/tmp/glusterfs-server_pretrans_" .. os.date("%s")
7f4c2a
tmpfile = io.open(tmpname, "w")
7f4c2a
tmpfile:write(script)
7f4c2a
tmpfile:close()
7f4c2a
ok, how, val = os.execute("/bin/bash " .. tmpname)
7f4c2a
os.remove(tmpname)
7f4c2a
if not (ok == 0) then
7f4c2a
   error("Detected running glusterfs processes", ok)
7f4c2a
end
7f4c2a
%endif
7f4c2a
7f4c2a
%changelog
39a3ce
* Thu Nov 19 2015 CentOS Sources <bugs@centos.org> - 3.7.1-17.atomic.1.el7.centos
39a3ce
- remove vendor and/or packager lines
39a3ce
7f4c2a
* Mon Sep 21 2015 Milind Changire <mchangir@redhat.com> - 3.7.1-16
7f4c2a
- fixes bugs 1263653 bz#1263653
7f4c2a
7f4c2a
* Mon Sep 21 2015 Bala.FA <barumuga@redhat.com> - 3.7.1-16
7f4c2a
- fixes bugs bz#1263653
7f4c2a
7f4c2a
* Tue Sep 15 2015 Bala.FA <barumuga@redhat.com> - 3.7.1-15
7f4c2a
- fixes bugs bz#1253774 bz#1257509 bz#1259221 bz#1259750 bz#1260086 
7f4c2a
  bz#1260512 bz#1262236 bz#1262291
7f4c2a
7f4c2a
* Tue Sep 01 2015 Bala.FA <barumuga@redhat.com> - 3.7.1-14
7f4c2a
- fixes bugs bz#1115367 bz#1232569 bz#1234213 bz#1234610 bz#1241336 
7f4c2a
  bz#1241385 bz#1241862 bz#1242803 bz#1245077 bz#1251457
7f4c2a
7f4c2a
* Thu Aug 27 2015 Bala.FA <barumuga@redhat.com> - 3.7.1-13
7f4c2a
- fixes bugs bz#1224184 bz#1225452 bz#1227759 bz#1228135 bz#1231080 
7f4c2a
  bz#1234399 bz#1235971 bz#1236038 bz#1238070 bz#1238111 bz#1238171 bz#1238398 
7f4c2a
  bz#1238977 bz#1239021 bz#1240918 bz#1245165 bz#1245636 bz#1245924 bz#1251409 
7f4c2a
  bz#1255471 bz#1257007 bz#1247349
7f4c2a
7f4c2a
* Wed Aug 19 2015 Bala.FA <barumuga@redhat.com> - 3.7.1-12
7f4c2a
- fixes bugs bz#1027723 bz#1064265 bz#1065651 bz#1134288 bz#1213893 
7f4c2a
  bz#1226665 bz#1226817 bz#1229606 bz#1229621 bz#1230532 bz#1232216 bz#1235571 
7f4c2a
  bz#1236546 bz#1236672 bz#1236990 bz#1238049 bz#1238071 bz#1239075 bz#1240657 
7f4c2a
  bz#1241649 bz#1241761 bz#1243542 bz#1243722 bz#1243886 bz#1244527 bz#1245448 
7f4c2a
  bz#1245536 bz#1245542 bz#1245897 bz#1245915 bz#1245919 bz#1246946 bz#1252359 
7f4c2a
  bz#1253549
7f4c2a
7f4c2a
* Sun Jul 19 2015 Bala.FA <barumuga@redhat.com> - 3.7.1-11
7f4c2a
- fixes bugs bz#1244187
7f4c2a
7f4c2a
* Wed Jul 15 2015 Bala.FA <barumuga@redhat.com> - 3.7.1-10
7f4c2a
- fixes bugs bz#1224177 bz#1230513 bz#1240617 bz#1242367 bz#1242423 
7f4c2a
  bz#1242543 bz#1242585 bz#1242767
7f4c2a
7f4c2a
* Mon Jul 13 2015 Bala.FA <barumuga@redhat.com> - 3.7.1-9
7f4c2a
- fixes bugs bz#1224177 bz#1224610 bz#1230525 bz#1231647 bz#1234725 
7f4c2a
  bz#1235121 bz#1239057 bz#1239108 bz#1239317 bz#1240196 bz#1240338 bz#1240925 
7f4c2a
  bz#1241048 bz#1241150 bz#1241366 bz#1241830 bz#1241839 bz#1241904 bz#1242046
7f4c2a
7f4c2a
* Wed Jul 08 2015 Bala.FA <barumuga@redhat.com> - 3.7.1-8
7f4c2a
- fixes bugs bz#1223205 bz#1224177 bz#1228247 bz#1229567 bz#1230513 
7f4c2a
  bz#1231635 bz#1231732 bz#1239280 bz#1240168 bz#1240245
7f4c2a
7f4c2a
* Fri Jul 03 2015 Bala.FA <barumuga@redhat.com> - 3.7.1-7
7f4c2a
- fixes bugs bz#1227197 bz#1228127 bz#1230612 bz#1231782 bz#1235735 
7f4c2a
  bz#1236556 bz#1237053 bz#1237165 bz#1238167
7f4c2a
7f4c2a
* Sun Jun 28 2015 Bala.FA <barumuga@redhat.com> - 3.7.1-6
7f4c2a
- fixes bugs bz#1140649 bz#1222856 bz#1223225 bz#1223677 bz#1223738 
7f4c2a
  bz#1223757 bz#1224177 bz#1224199 bz#1224227 bz#1224619 bz#1225747 bz#1226149 
7f4c2a
  bz#1226863 bz#1227869 bz#1228525 bz#1228598 bz#1231771 bz#1231773 bz#1231775 
7f4c2a
  bz#1231779 bz#1231784 bz#1231792 bz#1231796 bz#1231797 bz#1232307 bz#1232309 
7f4c2a
  bz#1232625 bz#1233033 bz#1233575 bz#1233694 bz#1234419 bz#1234720 bz#1234725 
7f4c2a
  bz#1234869 bz#1235147 bz#1235182 bz#1235225 bz#1235236 bz#1235244 bz#1235540 
7f4c2a
  bz#1235544 bz#1235628 bz#1235940
7f4c2a
7f4c2a
* Wed Jun 24 2015 Bala.FA <barumuga@redhat.com> - 3.7.1-5
7f4c2a
- fixes bugs bz#1121560 bz#1140649 bz#1178130 bz#1224115 bz#1226863 
7f4c2a
  bz#1227311 bz#1227900 bz#1228626 bz#1229260 bz#1229601 bz#1230513 bz#1230517 
7f4c2a
  bz#1230646 bz#1231223 bz#1231778 bz#1231780 bz#1231782 bz#1231788 bz#1231792 
7f4c2a
  bz#1232609 bz#1232624 bz#1233046 bz#1233486
7f4c2a
7f4c2a
* Thu Jun 18 2015 Bala.FA <barumuga@redhat.com> - 3.7.1-4
7f4c2a
- fixes bugs bz#1130998 bz#1224137 bz#1225010 bz#1227029 bz#1227311 
7f4c2a
  bz#1227709 bz#1230101 bz#1230635 bz#1231026 bz#1231166 bz#1231651 bz#1231771 
7f4c2a
  bz#1231775 bz#1231776 bz#1231792 bz#1232428 bz#1232641 bz#1233144
7f4c2a
7f4c2a
* Mon Jun 15 2015 Bala.FA <barumuga@redhat.com> - 3.7.1-3
7f4c2a
- fixes bugs bz#1211839 bz#1224046 bz#1224236 bz#1224662 bz#1224880 
7f4c2a
  bz#1225507 bz#1226889 bz#1227618 bz#1228017 bz#1228495 bz#1228597 bz#1229623 
7f4c2a
  bz#1229674 bz#1230607 bz#1230764 bz#1231078
7f4c2a
7f4c2a
* Fri Jun 12 2015 Bala.FA <barumuga@redhat.com> - 3.7.1-2
7f4c2a
- fixes bugs bz#1140506 bz#1186216 bz#1200815 bz#1203901 bz#1222053 
7f4c2a
  bz#1222785 bz#1223205 bz#1223746 bz#1224123 bz#1224136 bz#1224160 bz#1224161
7f4c2a
  bz#1224175 bz#1224177 bz#1224183 bz#1224195 bz#1224215 bz#1224249 bz#1224618
7f4c2a
  bz#1227172 bz#1227179 bz#1227469 bz#1227918 bz#1228164 bz#1228173 bz#1228496
7f4c2a
  bz#1228529 bz#1228643 bz#1229268 bz#1229612 bz#1230114 bz#1230186 bz#1230195
7f4c2a
  bz#1230522
7f4c2a
7f4c2a
* Tue Jun 09 2015 Bala FA <barumuga@redhat.com> - 3.7.1-1
7f4c2a
- rebase to 3.7.1
7f4c2a
- fixes bugs bz#1027710 bz#1039674 bz#1047481 bz#1140506 bz#1223201
7f4c2a
  bz#1223206 bz#1223715 bz#1224225 bz#1226162 bz#1227262 bz#1227317
7f4c2a
  bz#1227649 bz#1228266 bz#1228518 bz#1228541
7f4c2a
7f4c2a
* Tue Jun 02 2015 Bala FA <barumuga@redhat.com> - 3.7.0-3.1
7f4c2a
- fix glusterfs server build in rhel-7 due to change in dist tag
7f4c2a
7f4c2a
* Mon Jun 01 2015 Bala FA <barumuga@redhat.com> - 3.7.0-3
7f4c2a
- Resolves bz#1134690 bz#1110715
7f4c2a
7f4c2a
* Fri May 15 2015 Bala FA <barumuga@redhat.com> - 3.7.0-2
7f4c2a
- Resolves bz#1221743: glusterd not starting after a fresh install of
7f4c2a
                       3.7.0-1.el6rhs build
7f4c2a
7f4c2a
* Thu May 14 2015 Bala FA <barumuga@redhat.com> - 3.7.0-1
7f4c2a
- rebased to 3.7.0