diff --git a/.cvsignore b/.cvsignore index e69de29..025cfa4 100644 --- a/.cvsignore +++ b/.cvsignore @@ -0,0 +1 @@ +glusterfs-1.3.8.tar.gz diff --git a/glusterfs-1.3.7-ocreat.patch b/glusterfs-1.3.7-ocreat.patch new file mode 100644 index 0000000..5b0aa88 --- /dev/null +++ b/glusterfs-1.3.7-ocreat.patch @@ -0,0 +1,12 @@ +diff -Naupr glusterfs-1.3.7.orig/xlators/protocol/server/src/server-protocol.c glusterfs-1.3.7/xlators/protocol/server/src/server-protocol.c +--- glusterfs-1.3.7.orig/xlators/protocol/server/src/server-protocol.c 2007-10-16 09:37:00.000000000 +0200 ++++ glusterfs-1.3.7/xlators/protocol/server/src/server-protocol.c 2007-11-26 11:49:05.000000000 +0100 +@@ -4930,7 +4930,7 @@ mop_setspec (call_frame_t *frame, + goto fail; + } + +- ret = open (GLUSTERFSD_SPEC_PATH, O_WRONLY | O_CREAT | O_SYNC); ++ ret = open (GLUSTERFSD_SPEC_PATH, O_WRONLY | O_CREAT | O_SYNC, 0644); + spec_fd = ret; + if (spec_fd < 0){ + remote_errno = errno; diff --git a/glusterfs-1.3.8-mount.patch b/glusterfs-1.3.8-mount.patch new file mode 100644 index 0000000..61b7493 --- /dev/null +++ b/glusterfs-1.3.8-mount.patch @@ -0,0 +1,16 @@ +diff -Naupr glusterfs-1.3.8.orig/glusterfs-fuse/utils/mount.glusterfs.in glusterfs-1.3.8/glusterfs-fuse/utils/mount.glusterfs.in +--- glusterfs-1.3.8.orig/glusterfs-fuse/utils/mount.glusterfs.in 2008-01-08 12:49:35.000000000 +0100 ++++ glusterfs-1.3.8/glusterfs-fuse/utils/mount.glusterfs.in 2008-01-08 13:44:30.000000000 +0100 +@@ -121,6 +121,12 @@ main () + # $2=$(echo "$@" | sed -n 's/[^ ]* \([^ ]*\).*/\1/p'); + + mount_point="$2"; ++ ++ # Simple check to avoid multiple identical mounts ++ if grep -q "glusterfs $mount_point fuse" /etc/mtab; then ++ echo "$0: according to mtab, a glusterfs is already mounted on $mount_point" ++ exit 1 ++ fi + + fs_options=$(echo "$fs_options,$new_fs_options"); + diff --git a/glusterfs.spec b/glusterfs.spec new file mode 100644 index 0000000..7235d38 --- /dev/null +++ b/glusterfs.spec @@ -0,0 +1,257 @@ +# Make it possible to disable the client by passing --without client +%{?_without_client:%define _without_client --disable-fuse-client} +# Default to disabling client on RHEL, but allow forcing --with client +%{?rhel:%{!?_with_client:%define _without_client --disable-fuse-client}} + +Summary: Cluster File System +Name: glusterfs +Version: 1.3.8 +Release: 0.7%{?dist} +License: GPLv3+ +Group: System Environment/Base +URL: http://www.gluster.org/docs/index.php/GlusterFS +Source0: http://ftp.zresearch.com/pub/gluster/glusterfs/1.3/glusterfs-%{version}.tar.gz +Source1: glusterfsd.init +Source2: glusterfsd.sysconfig +Source3: umount.glusterfs +Patch0: glusterfs-1.3.7-ocreat.patch +Patch1: glusterfs-1.3.8-mount.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root +Requires(post): /sbin/chkconfig +Requires(preun): /sbin/service, /sbin/chkconfig +Requires(postun): /sbin/service +BuildRequires: python-devel +%{!?_without_ibverbs:BuildRequires: libibverbs-devel} +BuildRequires: flex, bison, byacc + +%description +GlusterFS is a clustered file-system capable of scaling to several +peta-bytes. It aggregates various storage bricks over Infiniband RDMA +or TCP/IP interconnect into one large parallel network file +system. GlusterFS is one of the most sophisticated file system in +terms of features and extensibility. It borrows a powerful concept +called Translators from GNU Hurd kernel. Much of the code in GlusterFS +is in userspace and easily manageable. + + +%package libs +Summary: GlusterFS Library and Translators +Group: System Environment/Libraries +Obsoletes: glusterfs-common >= 1.3.7-2 + +%description libs +GlusterFS is a clustered file-system capable of scaling to several +peta-bytes. It aggregates various storage bricks over Infiniband RDMA +or TCP/IP interconnect into one large parallel network file +system. GlusterFS is one of the most sophisticated file system in +terms of features and extensibility. It borrows a powerful concept +called Translators from GNU Hurd kernel. Much of the code in GlusterFS +is in userspace and easily manageable. + +This package includes libglusterfs and glusterfs translator modules +common to both GlusterFS server and client framework. + + +%if 0%{!?_without_client:1} +%package client +Summary: GlusterFS Client +Group: Applications/File +Requires: fuse +Requires: %{name}-libs = %{version}-%{release} +BuildRequires: fuse-devel + +%description client +GlusterFS is a clustered file-system capable of scaling to several +peta-bytes. It aggregates various storage bricks over Infiniband RDMA +or TCP/IP interconnect into one large parallel network file +system. GlusterFS is one of the most sophisticated file system in +terms of features and extensibility. It borrows a powerful concept +called Translators from GNU Hurd kernel. Much of the code in GlusterFS +is in userspace and easily manageable. + +This package provides the FUSE based GlusterFS client. +%endif + + +%package server +Summary: GlusterFS Server +Group: System Environment/Daemons +Requires: %{name}-libs = %{version}-%{release} + +%description server +GlusterFS is a clustered file-system capable of scaling to several +peta-bytes. It aggregates various storage bricks over Infiniband RDMA +or TCP/IP interconnect into one large parallel network file +system. GlusterFS is one of the most sophisticated file system in +terms of features and extensibility. It borrows a powerful concept +called Translators from GNU Hurd kernel. Much of the code in GlusterFS +is in userspace and easily manageable. + +This package provides the glusterfs server daemon. + + +%package devel +Summary: GlusterFS Development Libraries +Group: Development/Libraries +Requires: %{name}-libs = %{version}-%{release} + +%description devel +GlusterFS is a clustered file-system capable of scaling to several +peta-bytes. It aggregates various storage bricks over Infiniband RDMA +or TCP/IP interconnect into one large parallel network file +system. GlusterFS is one of the most sophisticated file system in +terms of features and extensibility. It borrows a powerful concept +called Translators from GNU Hurd kernel. Much of the code in GlusterFS +is in userspace and easily manageable. + +This package provides the development libraries. + + +%prep +%setup -q +%patch0 -p1 -b .ocreat +%patch1 -p1 -b .mount + + +%build +%configure %{?_without_ibverbs:--disable-ibverbs} %{?_without_client} +%{__make} %{?_smp_mflags} + + +%install +%{__rm} -rf %{buildroot} examples +%{__make} install DESTDIR=%{buildroot} +%{__mkdir_p} %{buildroot}/var/log/glusterfs +%{__mkdir_p} %{buildroot}%{_includedir}/glusterfs +%{__install} -p -m 0644 libglusterfs/src/*.h \ + %{buildroot}%{_includedir}/glusterfs/ + +# Remove installed docs, we include them ourselves as %%doc +%{__rm} -rf %{buildroot}%{_datadir}/doc/glusterfs/ + +# Rename the samples, so we can include them as %%config +for file in %{buildroot}%{_sysconfdir}/glusterfs/*.sample; do + %{__mv} ${file} `dirname ${file}`/`basename ${file} .sample` +done + +# Clean up the examples we want to include as %%doc +%{__cp} -a doc/examples examples +%{__rm} -f examples/Makefile* + +# Install init script and sysconfig file +%{__install} -D -p -m 0755 %{SOURCE1} \ + %{buildroot}%{_sysconfdir}/init.d/glusterfsd +%{__install} -D -p -m 0644 %{SOURCE2} \ + %{buildroot}%{_sysconfdir}/sysconfig/glusterfsd + +%if 0%{!?_without_client:1} +# Install wrapper umount script +%{__install} -D -p -m 0755 %{SOURCE3} \ + %{buildroot}/sbin/umount.glusterfs +%endif + + +%clean +%{__rm} -rf %{buildroot} + + +%post libs -p /sbin/ldconfig + +%postun libs -p /sbin/ldconfig + + +%post server +/sbin/chkconfig --add glusterfsd + +%preun server +if [ $1 -eq 0 ]; then + /sbin/service glusterfsd stop &>/dev/null || : + /sbin/chkconfig --del glusterfsd +fi + +%postun +if [ $1 -ge 1 ]; then + /sbin/service glusterfsd condrestart &>/dev/null || : +fi + + +%files libs +%doc AUTHORS ChangeLog COPYING NEWS README +%{_libdir}/glusterfs/ +%{_libdir}/*.so.* + + +%if 0%{!?_without_client:1} +%files client +%{_sbindir}/glusterfs +/sbin/mount.glusterfs +/sbin/umount.glusterfs +%dir /var/log/glusterfs/ +%endif + + +%files server +%doc examples/ doc/glusterfs-*.vol.sample +%dir %{_sysconfdir}/glusterfs/ +%config(noreplace) %{_sysconfdir}/glusterfs/*.vol +%config(noreplace) %{_sysconfdir}/sysconfig/glusterfsd +%{_sysconfdir}/init.d/glusterfsd +%{_sbindir}/glusterfsd +%dir /var/log/glusterfs/ + + +%files devel +%{_includedir}/glusterfs/ +%exclude %{_libdir}/*.a +%exclude %{_libdir}/*.la +%{_libdir}/*.so + + +%changelog +* Sun Feb 3 2008 Matthias Saou 1.3.8-0.7 +- Add --without client rpmbuild option, make it the default for RHEL (no fuse). + (I hope "rhel" is the proper default macro name, couldn't find it...) + +* Wed Jan 30 2008 Matthias Saou 1.3.8-0.6 +- Add --without ibverbs rpmbuild option to the package. + +* Mon Jan 14 2008 Matthias Saou 1.3.8-0.5 +- Update to current TLA again, patch-636 which fixes the known segfaults. + +* Thu Jan 10 2008 Matthias Saou 1.3.8-0.4 +- Downgrade to glusterfs--mainline--2.5--patch-628 which is more stable. + +* Tue Jan 8 2008 Matthias Saou 1.3.8-0.3 +- Update to current TLA snapshot. +- Include umount.glusterfs wrapper script (really needed? dunno). +- Include patch to mount wrapper to avoid multiple identical mounts. + +* Sun Dec 30 2007 Matthias Saou 1.3.8-0.1 +- Update to current TLA snapshot, which includes "volume-name=" fstab option. + +* Mon Dec 3 2007 Matthias Saou 1.3.7-6 +- Re-add the /var/log/glusterfs directory in the client sub-package (required). +- Include custom patch to support vol= in fstab for -n glusterfs client option. + +* Mon Nov 26 2007 Matthias Saou 1.3.7-4 +- Re-enable libibverbs. +- Check and update License field to GPLv3+. +- Add glusterfs-common obsoletes, to provide upgrade path from old packages. +- Include patch to add mode to O_CREATE opens. + +* Thu Nov 22 2007 Matthias Saou 1.3.7-3 +- Remove Makefile* files from examples. +- Include RHEL/Fedora type init script, since the included ones don't do. + +* Wed Nov 21 2007 Matthias Saou 1.3.7-1 +- Major spec file cleanup. +- Add misssing %%clean section. +- Fix ldconfig calls (weren't set for the proper sub-package). + +* Sat Aug 4 2007 Matt Paine - 1.3.pre7 +- Added support to build rpm without ibverbs support (use --without ibverbs + switch) + +* Sun Jul 15 2007 Matt Paine - 1.3.pre6 +- Initial spec file + diff --git a/glusterfsd.init b/glusterfsd.init new file mode 100644 index 0000000..1c9ce54 --- /dev/null +++ b/glusterfsd.init @@ -0,0 +1,69 @@ +#!/bin/sh +# +# glusterfsd Startup script for the glusterfs server +# +# chkconfig: - 20 80 +# description: Clustered file-system server +# +# processname: glusterfsd +# config: /etc/glusterfs/glusterfs-server.vol +# pidfile: /var/run/glusterfsd.pid + +# Source function library +. /etc/rc.d/init.d/functions + +prog="glusterfsd" +glusterfsd="/usr/sbin/glusterfsd" +RETVAL=0 + +# Set defaults, then source config for eventual overrides +GLUSTERFSD_CONFIG="/etc/glusterfs/glusterfs-server.vol" +GLUSTERFSD_LOGFILE="/var/log/glusterfs/glusterfsd.log" +GLUSTERFSD_LOGLEVEL="WARNING" +[ -f /etc/sysconfig/glusterfsd ] && source /etc/sysconfig/glusterfsd + +start() { + echo -n $"Starting $prog: " + daemon $glusterfsd -f ${GLUSTERFSD_CONFIG} -l ${GLUSTERFSD_LOGFILE} -L ${GLUSTERFSD_LOGLEVEL} + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog + return $RETVAL +} + +stop() { + echo -n $"Stopping $prog: " + killproc $glusterfsd + RETVAL=$? + echo + [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog + return $RETVAL +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + restart|reload) + stop + start + ;; + condrestart) + if [ -f /var/lock/subsys/$prog ]; then + stop + start + fi + ;; + status) + status $glusterfsd + RETVAL=$? + ;; + *) + echo $"Usage: $0 {start|stop|restart|condrestart|status}" + RETVAL=1 +esac + +exit $RETVAL diff --git a/glusterfsd.sysconfig b/glusterfsd.sysconfig new file mode 100644 index 0000000..136499d --- /dev/null +++ b/glusterfsd.sysconfig @@ -0,0 +1,7 @@ +# Change the glusterfsd service defaults here. +# LOGLEVEL is one of DEBUG WARNING ERROR (default) CRITICAL or NONE + +#GLUSTERFSD_CONFIG="/etc/glusterfs/glusterfs-server.vol" +#GLUSTERFSD_LOGFILE="/var/log/glusterfs/glusterfsd.log" +#GLUSTERFSD_LOGLEVEL="ERROR" + diff --git a/sources b/sources index e69de29..6beee6d 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +eb7ebc04cab10966877863f31799382d glusterfs-1.3.8.tar.gz diff --git a/umount.glusterfs b/umount.glusterfs new file mode 100644 index 0000000..6c179a3 --- /dev/null +++ b/umount.glusterfs @@ -0,0 +1,20 @@ +#!/bin/sh +# (C) 2008 Gluster core team +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public +# License along with this program; if not, write to the Free +# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301 USA + +umount "$1" +