An update to the net/glusterfs port:

- System call fixes backported from upstream
- Adding missing scripts to the SHEBANG_FILES list
- Correct a bug with extended attributes
- Fix detection of the PACKAGE_VERSION and generation of the correct API version

PR:		249492
Submitted by:	maintainer
Reported by:	timur
This commit is contained in:
Timur I. Bakeyev 2020-09-26 21:09:13 +00:00
parent 3b58f092fa
commit 93be2a4f8f
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=550225
11 changed files with 346 additions and 93 deletions

View file

@ -2,6 +2,7 @@
PORTNAME= glusterfs
PORTVERSION= 8.0
PORTREVISION= 1
CATEGORIES= net
MASTER_SITES= http://bits.gluster.org/pub/gluster/glusterfs/src/
@ -11,19 +12,20 @@ COMMENT= GlusterFS distributed file system
LICENSE= GPLv2 LGPL3
LICENSE_COMB= dual
BROKEN_SSL= libressl
BUILD_DEPENDS= bash:shells/bash
RUN_DEPENDS= bash:shells/bash
LIB_DEPENDS= libargp.so:devel/argp-standalone \
libcurl.so:ftp/curl \
liburcu-bp.so:sysutils/liburcu \
libuuid.so:misc/e2fsprogs-libuuid
RUN_DEPENDS= bash:shells/bash
USES= autoreconf bison compiler:c11 gettext gnome libtool pkgconfig python \
readline shebangfix sqlite ssl
BROKEN_SSL= libressl
USES= autoreconf bison compiler:c11 gettext gnome libtool pkgconfig \
python readline shebangfix sqlite ssl
SHEBANG_FILES= events/src/glustereventsd.py events/src/peer_eventsapi.py \
SHEBANG_FILES= build-aux/pkg-version \
events/src/glustereventsd.py events/src/peer_eventsapi.py \
events/tools/eventsdash.py extras/ganesha/ocf/ganesha_grace \
extras/ganesha/ocf/ganesha_mon extras/ganesha/ocf/ganesha_nfsd \
extras/ganesha/scripts/create-export-ganesha.sh \
@ -31,6 +33,9 @@ SHEBANG_FILES= events/src/glustereventsd.py events/src/peer_eventsapi.py \
extras/ganesha/scripts/ganesha-ha.sh \
extras/ganesha/scripts/generate-epoch.py \
extras/peer_add_secret_pub.in \
extras/hook-scripts/start/post/S29CTDBsetup.sh \
extras/hook-scripts/start/post/S30samba-start.sh \
extras/hook-scripts/start/post/S31ganesha-start.sh \
extras/post-upgrade-script-for-quota.sh \
extras/pre-upgrade-script-for-quota.sh \
extras/snap_scheduler/gcron.py \
@ -62,9 +67,16 @@ CONFIGURE_ARGS= --disable-epoll \
CPPFLAGS+= -I"${LOCALBASE}/include"
LDFLAGS+= -L"${LOCALBASE}/lib" -largp
INSTALL_TARGET= install-strip
PLIST_SUB= GLUSTERLIBDIR="lib/${PORTNAME}"
PLIST_SUB= GLUSTERLIBDIR="lib/${PORTNAME}" \
PORTVERSION="${PORTVERSION}"
KMODDIR?= /boot/modules
OPTIONS_DEFINE= DOCS
post-install:
${LN} -nfs ${PREFIX}/libexec/glusterfs/glusterfind/S57glusterfind-delete-post.py ${STAGEDIR}/var/db/glusterd/hooks/1/delete/post/S57glusterfind-delete-post
${LN} -nfs ../libexec/glusterfs/peer_eventsapi.py ${STAGEDIR}${PREFIX}/sbin/gluster-eventsapi
${LN} -nfs ../libexec/glusterfs/gfevents/glustereventsd.py ${STAGEDIR}${PREFIX}/sbin/glustereventsd
${LN} -nfs ../libexec/glusterfs/gfind_missing_files/gfind_missing_files.sh ${STAGEDIR}${PREFIX}/sbin/gfind_missing_files
.include <bsd.port.mk>

View file

@ -37,3 +37,17 @@
GF_CFLAGS="${GF_CFLAGS} -DO_DSYNC=0"
GF_CFLAGS="${GF_CFLAGS} -Dxdr_quad_t=xdr_longlong_t"
GF_CFLAGS="${GF_CFLAGS} -Dxdr_u_quad_t=xdr_u_longlong_t"
@@ -1508,6 +1514,13 @@ AC_SUBST(AM_LIBTOOLFLAGS)
AC_SUBST(GF_NO_UNDEFINED)
AC_SUBST(GF_XLATOR_DEFAULT_LDFLAGS)
AC_SUBST(GF_XLATOR_LDFLAGS)
+AC_SUBST(GF_XLATOR_MGNT_LIBADD)
+
+case $host_os in
+ *freebsd*)
+ GF_XLATOR_MGNT_LIBADD="-lutil -lprocstat"
+ ;;
+esac
CONTRIBDIR='$(top_srcdir)/contrib'
AC_SUBST(CONTRIBDIR)

View file

@ -1,11 +1,12 @@
--- libglusterfs/src/Makefile.am.orig 2020-07-06 01:22:37 UTC
+++ libglusterfs/src/Makefile.am
@@ -12,7 +12,7 @@ libglusterfs_la_CPPFLAGS = $(GF_CPPFLAGS) -D__USE_FILE
@@ -12,7 +12,8 @@ libglusterfs_la_CPPFLAGS = $(GF_CPPFLAGS) -D__USE_FILE
-DSBIN_DIR=\"$(sbindir)\" -I$(CONTRIBDIR)/timer-wheel \
-I$(CONTRIBDIR)/xxhash
-libglusterfs_la_LIBADD = $(ZLIB_LIBS) $(MATH_LIB) $(UUID_LIBS)
+libglusterfs_la_LIBADD = $(ZLIB_LIBS) $(MATH_LIB) $(UUID_LIBS) $(URCU_LIBS)
+libglusterfs_la_LIBADD = $(ZLIB_LIBS) $(MATH_LIB) $(UUID_LIBS) $(LIB_DL) \
+ $(URCU_LIBS) $(URCU_CDS_LIBS)
libglusterfs_la_LDFLAGS = -version-info $(LIBGLUSTERFS_LT_VERSION) $(GF_LDFLAGS) \
-export-symbols $(top_srcdir)/libglusterfs/src/libglusterfs.sym

View file

@ -1,11 +1,34 @@
--- libglusterfs/src/common-utils.c.orig 2020-05-18 20:57:54 UTC
--- libglusterfs/src/common-utils.c.orig 2020-07-06 01:22:37 UTC
+++ libglusterfs/src/common-utils.c
@@ -3067,7 +3067,7 @@ get_mem_size()
@@ -3113,7 +3113,7 @@ get_mem_size()
memsize = page_size * num_pages;
#endif
-#if defined GF_DARWIN_HOST_OS
+#if defined GF_DARWIN_HOST_OS || defined __FreeBSD__
size_t len = sizeof(memsize);
int name[] = {CTL_HW, HW_PHYSMEM};
@@ -4127,6 +4127,14 @@ gf_skip_header_section(int fd, int header_len)
gf_boolean_t
gf_is_pid_running(int pid)
{
+#ifdef __FreeBSD__
+ int ret = -1;
+
+ ret = sys_kill(pid, 0);
+ if (ret < 0) {
+ return _gf_false;
+ }
+#else
char fname[32] = {
0,
};
@@ -4140,6 +4148,7 @@ gf_is_pid_running(int pid)
}
sys_close(fd);
+#endif
return _gf_true;
}

View file

@ -0,0 +1,16 @@
--- libglusterfs/src/glusterfs/syscall.h.orig 2020-08-04 12:41:32 UTC
+++ libglusterfs/src/glusterfs/syscall.h
@@ -266,4 +266,13 @@ ssize_t
sys_copy_file_range(int fd_in, off64_t *off_in, int fd_out, off64_t *off_out,
size_t len, unsigned int flags);
+int
+sys_kill(pid_t pid, int sig);
+
+#ifdef __FreeBSD__
+int
+sys_sysctl(const int *name, u_int namelen, void *oldp, size_t *oldlenp,
+ const void *newp, size_t newlen);
+#endif
+
#endif /* __SYSCALL_H__ */

View file

@ -0,0 +1,11 @@
--- libglusterfs/src/libglusterfs.sym.orig 2020-08-04 12:41:32 UTC
+++ libglusterfs/src/libglusterfs.sym
@@ -1080,6 +1080,8 @@ sys_write
sys_writev
sys_socket
sys_accept
+sys_kill
+sys_sysctl
tbf_init
tbf_throttle
timespec_now

View file

@ -1,20 +1,70 @@
--- libglusterfs/src/syscall.c.orig 2020-05-18 20:57:54 UTC
--- libglusterfs/src/syscall.c.orig 2020-08-04 12:41:32 UTC
+++ libglusterfs/src/syscall.c
@@ -485,7 +485,7 @@ sys_lsetxattr(const char *path, const char *name, cons
@@ -13,6 +13,10 @@
#include "glusterfs/mem-pool.h"
#include "glusterfs/libglusterfs-messages.h"
+#ifdef __FreeBSD__
+#include <sys/sysctl.h>
+#include <signal.h>
+#endif
#include <sys/types.h>
#include <utime.h>
#include <sys/time.h>
@@ -506,9 +510,17 @@ sys_lsetxattr(const char *path, const char *name, cons
#endif
#ifdef GF_BSD_HOST_OS
- return FS_RET_CHECK0(
+ return FS_RET_CHECK(
+ ssize_t ret = FS_RET_CHECK(
extattr_set_link(path, EXTATTR_NAMESPACE_USER, name, value, size),
errno);
+ /* On BSD extattr_set_link returns the number of bytes written/read on
+ * success. Force this to be 0 if it was successful so the result remains
+ * compatible with other platform expectations.
+ */
+ if(ret > 0) {
+ ret = 0;
+ }
+ return ret;
#endif
@@ -603,7 +603,7 @@ sys_fsetxattr(int filedes, const char *name, const voi
#ifdef GF_SOLARIS_HOST_OS
@@ -624,9 +636,17 @@ sys_fsetxattr(int filedes, const char *name, const voi
#endif
#ifdef GF_BSD_HOST_OS
- return FS_RET_CHECK0(
+ return FS_RET_CHECK(
+ ssize_t ret = FS_RET_CHECK(
extattr_set_fd(filedes, EXTATTR_NAMESPACE_USER, name, value, size),
errno);
+ /* On BSD extattr_set_fd returns the number of bytes written/read on
+ * success. Force this to be 0 if it was successful so the result remains
+ * compatible with other platform expectations.
+ */
+ if(ret > 0) {
+ ret = 0;
+ }
+ return ret;
#endif
#ifdef GF_SOLARIS_HOST_OS
@@ -854,3 +874,18 @@ sys_copy_file_range(int fd_in, off64_t *off_in, int fd
#endif /* HAVE_COPY_FILE_RANGE_SYS */
#endif /* HAVE_COPY_FILE_RANGE */
}
+
+#ifdef __FreeBSD__
+int
+sys_kill(pid_t pid, int sig)
+{
+ return FS_RET_CHECK0(kill(pid, sig), errno);
+}
+
+int
+sys_sysctl(const int *name, u_int namelen, void *oldp, size_t *oldlenp,
+ const void *newp, size_t newlen)
+{
+ return FS_RET_CHECK0(sysctl(name, namelen, oldp, oldlenp, newp, newlen), errno);
+}
+#endif

View file

@ -1,5 +1,5 @@
--- xlators/mount/fuse/utils/mount_glusterfs.in.orig 2017-06-27 22:25:12.392137135 +0700
+++ xlators/mount/fuse/utils/mount_glusterfs.in 2017-12-19 18:24:21.736142000 +0700
--- xlators/mount/fuse/utils/mount_glusterfs.in.orig 2017-06-28 05:25:12 UTC
+++ xlators/mount/fuse/utils/mount_glusterfs.in
@@ -463,50 +463,44 @@ parse_options()
if [ "$key" = "$value" ]; then
without_options $pair;

View file

@ -1,6 +1,6 @@
--- xlators/mgmt/glusterd/src/Makefile.am.orig 2020-07-16 17:28:50 UTC
+++ xlators/mgmt/glusterd/src/Makefile.am
@@ -25,12 +25,14 @@ glusterd_la_SOURCES = glusterd.c glusterd-handler.c gl
@@ -25,13 +25,14 @@ glusterd_la_SOURCES = glusterd.c glusterd-handler.c gl
glusterd-conn-helper.c glusterd-snapd-svc.c glusterd-snapd-svc-helper.c \
glusterd-bitd-svc.c glusterd-scrub-svc.c glusterd-server-quorum.c \
glusterd-reset-brick.c glusterd-shd-svc.c glusterd-shd-svc-helper.c \
@ -12,7 +12,18 @@
$(top_builddir)/libglusterd/src/libglusterd.la \
$(top_builddir)/rpc/xdr/src/libgfxdr.la \
$(top_builddir)/rpc/rpc-lib/src/libgfrpc.la \
+ $(CONTRIBDIR)/mount/mntent_compat.h \
$(XML_LIBS) -lcrypto $(URCU_LIBS) $(URCU_CDS_LIBS) $(LIB_DL)
- $(XML_LIBS) -lcrypto $(URCU_LIBS) $(URCU_CDS_LIBS) $(LIB_DL)
+ $(XML_LIBS) -lcrypto $(URCU_LIBS) $(URCU_CDS_LIBS) $(LIB_DL) $(GF_XLATOR_MGNT_LIBADD)
noinst_HEADERS = glusterd.h glusterd-utils.h glusterd-op-sm.h \
glusterd-sm.h glusterd-store.h glusterd-mem-types.h \
@@ -46,7 +47,8 @@ noinst_HEADERS = glusterd.h glusterd-utils.h glusterd-
glusterd-scrub-svc.h glusterd-server-quorum.h glusterd-errno.h \
glusterd-shd-svc.h glusterd-shd-svc-helper.h \
glusterd-gfproxyd-svc.h glusterd-gfproxyd-svc-helper.h \
- $(CONTRIBDIR)/userspace-rcu/rculist-extra.h
+ $(CONTRIBDIR)/userspace-rcu/rculist-extra.h \
+ $(CONTRIBDIR)/mount/mntent_compat.h
AM_CPPFLAGS = $(GF_CPPFLAGS) -I$(top_srcdir)/libglusterfs/src \
-I$(top_srcdir)/rpc/xdr/src -I$(top_builddir)/rpc/xdr/src \

View file

@ -0,0 +1,115 @@
--- xlators/mgmt/glusterd/src/glusterd-utils.c.orig 2020-07-06 01:22:37 UTC
+++ xlators/mgmt/glusterd/src/glusterd-utils.c
@@ -79,6 +79,14 @@
#include <sys/sockio.h>
#endif
+#ifdef __FreeBSD__
+#include <sys/sysctl.h>
+#include <sys/param.h>
+#include <sys/queue.h>
+#include <libprocstat.h>
+#include <libutil.h>
+#endif
+
#define NFS_PROGRAM 100003
#define NFSV3_VERSION 3
@@ -6270,7 +6278,6 @@ find_compatible_brick(glusterd_conf_t *conf, glusterd_
int
glusterd_get_sock_from_brick_pid(int pid, char *sockpath, size_t len)
{
- char fname[128] = "";
char buf[1024] = "";
char cmdline[2048] = "";
xlator_t *this = NULL;
@@ -6285,6 +6292,22 @@ glusterd_get_sock_from_brick_pid(int pid, char *sockpa
this = THIS;
GF_ASSERT(this);
+#ifdef __FreeBSD__
+ blen = sizeof(buf);
+ int mib[4];
+
+ mib[0] = CTL_KERN;
+ mib[1] = KERN_PROC;
+ mib[2] = KERN_PROC_ARGS;
+ mib[3] = pid;
+
+ if (sys_sysctl(mib, 4, buf, &blen, NULL, blen) != 0) {
+ gf_log(this->name, GF_LOG_ERROR, "brick process %d is not running",
+ pid);
+ return ret;
+ }
+#else
+ char fname[128] = "";
snprintf(fname, sizeof(fname), "/proc/%d/cmdline", pid);
if (sys_access(fname, R_OK) != 0) {
@@ -6301,6 +6324,7 @@ glusterd_get_sock_from_brick_pid(int pid, char *sockpa
strerror(errno), fname);
return ret;
}
+#endif
/* convert cmdline to single string */
for (i = 0, j = 0; i < blen; i++) {
@@ -6349,6 +6373,42 @@ glusterd_get_sock_from_brick_pid(int pid, char *sockpa
char *
search_brick_path_from_proc(pid_t brick_pid, char *brickpath)
{
+ char *brick_path = NULL;
+#ifdef __FreeBSD__
+ struct filestat *fst;
+ struct procstat *ps;
+ struct kinfo_proc *kp;
+ struct filestat_list *head;
+
+ ps = procstat_open_sysctl();
+ if (ps == NULL)
+ goto out;
+
+ kp = kinfo_getproc(brick_pid);
+ if (kp == NULL)
+ goto out;
+
+ head = procstat_getfiles(ps, (void *)kp, 0);
+ if (head == NULL)
+ goto out;
+
+ STAILQ_FOREACH(fst, head, next) {
+ if(fst->fs_fd < 0)
+ continue;
+
+ if (!strcmp(fst->fs_path, brickpath)) {
+ brick_path = gf_strdup(fst->fs_path);
+ break;
+ }
+ }
+
+out:
+ if (head != NULL)
+ procstat_freefiles(ps, head);
+ if (kp != NULL)
+ free(kp);
+ procstat_close(ps);
+#else
struct dirent *dp = NULL;
DIR *dirp = NULL;
size_t len = 0;
@@ -6359,7 +6419,6 @@ search_brick_path_from_proc(pid_t brick_pid, char *bri
0,
},
};
- char *brick_path = NULL;
if (!brickpath)
goto out;
@@ -6396,6 +6455,7 @@ search_brick_path_from_proc(pid_t brick_pid, char *bri
}
out:
sys_closedir(dirp);
+#endif
return brick_path;
}

View file

@ -11,8 +11,8 @@ bin/glusterfind
%%ETCDIR%%/group-metadata-cache
%%ETCDIR%%/group-nl-cache
%%ETCDIR%%/group-samba
@sample %%ETCDIR%%/group-virt.example
@sample %%ETCDIR%%/logger.conf.example
%%ETCDIR%%/group-virt.example
@sample %%ETCDIR%%/logger.conf.example %%ETCDIR%%/logger.conf
@sample etc/ganesha/ganesha-ha.conf.sample
%%ETCDIR%%/thin-arbiter.vol
include/glusterfs/api/glfs-handles.h
@ -112,71 +112,71 @@ include/glusterfs/trie.h
include/glusterfs/upcall-utils.h
include/glusterfs/xlator.h
include/glusterfs/y.tab.h
%%GLUSTERLIBDIR%%/auth/addr.so
%%GLUSTERLIBDIR%%/auth/login.so
%%GLUSTERLIBDIR%%/cloudsync-plugins/cloudsyncs3.so
%%GLUSTERLIBDIR%%/rpc-transport/socket.so
%%GLUSTERLIBDIR%%/xlator/cluster/afr.so
%%GLUSTERLIBDIR%%/xlator/cluster/dht.so
%%GLUSTERLIBDIR%%/xlator/cluster/disperse.so
%%GLUSTERLIBDIR%%/xlator/cluster/distribute.so
%%GLUSTERLIBDIR%%/xlator/cluster/ec.so
%%GLUSTERLIBDIR%%/xlator/cluster/nufa.so
%%GLUSTERLIBDIR%%/xlator/cluster/replicate.so
%%GLUSTERLIBDIR%%/xlator/cluster/switch.so
%%GLUSTERLIBDIR%%/xlator/debug/delay-gen.so
%%GLUSTERLIBDIR%%/xlator/debug/error-gen.so
%%GLUSTERLIBDIR%%/xlator/debug/io-stats.so
%%GLUSTERLIBDIR%%/xlator/debug/sink.so
%%GLUSTERLIBDIR%%/xlator/debug/trace.so
%%GLUSTERLIBDIR%%/xlator/features/access-control.so
%%GLUSTERLIBDIR%%/xlator/features/arbiter.so
%%GLUSTERLIBDIR%%/xlator/features/barrier.so
%%GLUSTERLIBDIR%%/xlator/features/bit-rot.so
%%GLUSTERLIBDIR%%/xlator/features/bitrot-stub.so
%%GLUSTERLIBDIR%%/xlator/features/cdc.so
%%GLUSTERLIBDIR%%/xlator/features/changelog.so
%%GLUSTERLIBDIR%%/xlator/features/cloudsync.so
%%GLUSTERLIBDIR%%/xlator/features/gfid-access.so
%%GLUSTERLIBDIR%%/xlator/features/index.so
%%GLUSTERLIBDIR%%/xlator/features/leases.so
%%GLUSTERLIBDIR%%/xlator/features/locks.so
%%GLUSTERLIBDIR%%/xlator/features/marker.so
%%GLUSTERLIBDIR%%/xlator/features/namespace.so
%%GLUSTERLIBDIR%%/xlator/features/posix-locks.so
%%GLUSTERLIBDIR%%/xlator/features/quiesce.so
%%GLUSTERLIBDIR%%/xlator/features/quota.so
%%GLUSTERLIBDIR%%/xlator/features/quotad.so
%%GLUSTERLIBDIR%%/xlator/features/read-only.so
%%GLUSTERLIBDIR%%/xlator/features/sdfs.so
%%GLUSTERLIBDIR%%/xlator/features/selinux.so
%%GLUSTERLIBDIR%%/xlator/features/shard.so
%%GLUSTERLIBDIR%%/xlator/features/snapview-client.so
%%GLUSTERLIBDIR%%/xlator/features/snapview-server.so
%%GLUSTERLIBDIR%%/xlator/features/thin-arbiter.so
%%GLUSTERLIBDIR%%/xlator/features/trash.so
%%GLUSTERLIBDIR%%/xlator/features/upcall.so
%%GLUSTERLIBDIR%%/xlator/features/utime.so
%%GLUSTERLIBDIR%%/xlator/features/worm.so
%%GLUSTERLIBDIR%%/xlator/meta.so
%%GLUSTERLIBDIR%%/xlator/mgmt/glusterd.so
%%GLUSTERLIBDIR%%/xlator/mount/api.so
%%GLUSTERLIBDIR%%/xlator/mount/fuse.so
%%GLUSTERLIBDIR%%/xlator/performance/io-cache.so
%%GLUSTERLIBDIR%%/xlator/performance/io-threads.so
%%GLUSTERLIBDIR%%/xlator/performance/md-cache.so
%%GLUSTERLIBDIR%%/xlator/performance/nl-cache.so
%%GLUSTERLIBDIR%%/xlator/performance/open-behind.so
%%GLUSTERLIBDIR%%/xlator/performance/quick-read.so
%%GLUSTERLIBDIR%%/xlator/performance/read-ahead.so
%%GLUSTERLIBDIR%%/xlator/performance/readdir-ahead.so
%%GLUSTERLIBDIR%%/xlator/performance/stat-prefetch.so
%%GLUSTERLIBDIR%%/xlator/performance/write-behind.so
%%GLUSTERLIBDIR%%/xlator/playground/template.so
%%GLUSTERLIBDIR%%/xlator/protocol/client.so
%%GLUSTERLIBDIR%%/xlator/protocol/server.so
%%GLUSTERLIBDIR%%/xlator/storage/posix.so
%%GLUSTERLIBDIR%%/xlator/system/posix-acl.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/auth/addr.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/auth/login.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/cloudsync-plugins/cloudsyncs3.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/rpc-transport/socket.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/cluster/afr.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/cluster/dht.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/cluster/disperse.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/cluster/distribute.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/cluster/ec.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/cluster/nufa.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/cluster/replicate.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/cluster/switch.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/debug/delay-gen.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/debug/error-gen.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/debug/io-stats.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/debug/sink.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/debug/trace.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/access-control.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/arbiter.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/barrier.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/bit-rot.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/bitrot-stub.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/cdc.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/changelog.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/cloudsync.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/gfid-access.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/index.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/leases.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/locks.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/marker.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/namespace.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/posix-locks.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/quiesce.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/quota.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/quotad.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/read-only.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/sdfs.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/selinux.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/shard.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/snapview-client.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/snapview-server.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/thin-arbiter.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/trash.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/upcall.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/utime.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/features/worm.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/meta.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/mgmt/glusterd.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/mount/api.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/mount/fuse.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/performance/io-cache.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/performance/io-threads.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/performance/md-cache.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/performance/nl-cache.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/performance/open-behind.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/performance/quick-read.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/performance/read-ahead.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/performance/readdir-ahead.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/performance/stat-prefetch.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/performance/write-behind.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/playground/template.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/protocol/client.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/protocol/server.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/storage/posix.so
%%GLUSTERLIBDIR%%/%%PORTVERSION%%/xlator/system/posix-acl.so
lib/libgfapi.so
lib/libgfapi.so.0
lib/libgfapi.so.0.0.0