[Gluster-devel] Plans for FreeBSD support?

Anand Avati avati at zresearch.com
Thu Jul 26 04:29:17 UTC 2007


Attila,
 Thanks again for your initial work on helping porting glusterfs to FreeBSD.
Based on your help we have been able to get glusterfsd to work on FreeBSD
and export volumes successfully.
  We are willing to provide you more active support in getting glusterfs
ported. At the time of your previous patch submission there was a transition
in codebase from glusterfs--mainline--2.4 to glusterfs--mainline--2.5, and
your patches were on 2.4, where related code were being changed in
glusterfs--mainline--2.5, hence I couldnt apply those patches immediately.
Apologies for the delay.
  If you can give a shot in getting the client running as well on FreeBSD,
we will all appretiate it a lot!

thanks again,
avati

2007/5/11, Attila Nagy <bra at fsn.hu>:
>
> Hello,
>
> I would like to reply to the following e-mail (I've just subscribed, so
> this will be a new thread, sorry):
> http://lists.nongnu.org/archive/html/gluster-devel/2007-05/msg00113.html
>
> First of all, if you need a (or more than one) FreeBSD developer
> machine(s), just tell me, I can give access to them (it's possible that
> installing FreeBSD on a local machine can be easier).
>
> BTW, I've tried to compile it. I have a FreeBSD/amd64 6-STABLE machine
> and glusterfs-1.3.0-pre3 (tell me if it's not the right version to start
> with).
>
> So far I did the following:
> - gunzip/untar
> - -ldl cleaning from configure
> - ./configure --disable-ibverbs LDFLAGS="-L/usr/local/lib -L/usr/lib
> -I/usr/include -I/usr/local/include" LIBS="-lpthread" CC=gcc42 CXX=g++42
> (I use gcc42 because I saw on the webpage, that at least gcc 4.1 should
> be used when developing)
> - make CFLAGS="-L/usr/local/lib -L/usr/lib -I/usr/include
> -I/usr/local/include -DFUSE_USE_VERSION=26" CC=gcc42 CXX=g++42
> (it's possible that FUSE_USE_VERSION was only needed for 1.2.3, I can't
> remember, I started with that first, but thought that I should use the
> newer one)
>
> The compilation first fails at:
> gcc -DPACKAGE_NAME=\"glusterfs\" -DPACKAGE_TARNAME=\"glusterfs\"
> -DPACKAGE_VERSION=\"1.3.0-pre3\" "-DPACKAGE_STRING=\"glusterfs
> 1.3.0-pre3\"" -DPACKAGE_BUGREPORT=\"gluster-devel at nongnu.org\"
> -DPACKAGE=\"glusterfs\" -DVERSION=\"1.3.0-pre3\" -DSTDC_HEADERS=1
> -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1
> -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1
> -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1
> -DYYTEXT_POINTER=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBDL=1 -DHAVE_LIBFUSE=1
> -DHAVE_BACKTRACE=1 -I. -I. -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
> -DXLATORDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/xlator\"
> -DSCHEDULERDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/scheduler\"
> -DTRANSPORTDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/transport\"
> -DYY_NO_UNPUT -fPIC -Wall -g -shared -nostartfiles -rdynamic
> -L/usr/local/lib -L/usr/lib -I/usr/include -I/usr/local/include -MT
> libglusterfs_la-spec.lex.lo -MD -MP -MF
> .deps/libglusterfs_la-spec.lex.Tpo -c spec.lex.c  -fPIC -DPIC -o
> .libs/libglusterfs_la-spec.lex.o
> ./spec.l: In function `yylex':
> ./spec.l:41: error: `yylval' undeclared (first use in this function)
> ./spec.l:41: error: (Each undeclared identifier is reported only once
> ./spec.l:41: error: for each function it appears in.)
> ./spec.l:41: warning: cast from pointer to integer of different size
> *** Error code 1
>
> Stop in /src/glusterfs-1.3.0-pre3/libglusterfs/src.
> *** Error code 1
>
> Stop in /src/glusterfs-1.3.0-pre3/libglusterfs.
> *** Error code 1
>
> I've hacked the following into libglusterfs/src/spec.l (YYSTYPE lines):
> %{
>
> #include "xlator.h"
> #include "y.tab.h"
> #include <string.h>
>
> #define YYSTYPE char *
> extern YYSTYPE yylval;
>
> %}
>
> Retry.
>
> Now it stops at:
> gcc -DPACKAGE_NAME=\"glusterfs\" -DPACKAGE_TARNAME=\"glusterfs\"
> -DPACKAGE_VERSION=\"1.3.0-pre3\" "-DPACKAGE_STRING=\"glusterfs
> 1.3.0-pre3\"" -DPACKAGE_BUGREPORT=\"gluster-devel at nongnu.org\"
> -DPACKAGE=\"glusterfs\" -DVERSION=\"1.3.0-pre3\" -DSTDC_HEADERS=1
> -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1
> -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1
> -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1
> -DYYTEXT_POINTER=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBDL=1 -DHAVE_LIBFUSE=1
> -DHAVE_BACKTRACE=1 -I. -I. -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
> -DXLATORDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/xlator\"
> -DSCHEDULERDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/scheduler\"
> -DTRANSPORTDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/transport\"
> -DYY_NO_UNPUT -fPIC -Wall -g -shared -nostartfiles -rdynamic
> -L/usr/local/lib -L/usr/lib -I/usr/include -I/usr/local/include -MT
> libglusterfs_la-transport.lo -MD -MP -MF
> .deps/libglusterfs_la-transport.Tpo -c transport.c  -fPIC -DPIC -o
> .libs/libglusterfs_la-transport.o
> In file included from transport.c:25:
> logging.h:43: error: syntax error before "_gf_log"
> logging.h:46: error: syntax error before "int32_t"
> logging.h:48: warning: type defaults to `int' in declaration of `_gf_log'
> logging.h:48: warning: data definition has no type or storage class
> logging.h:49: error: syntax error before "gf_log_init"
> logging.h:49: warning: type defaults to `int' in declaration of
> `gf_log_init'
> logging.h:49: warning: data definition has no type or storage class
> *** Error code 1
>
> Stop in /src/glusterfs-1.3.0-pre3/libglusterfs/src.
> *** Error code 1
>
> Stop in /src/glusterfs-1.3.0-pre3/libglusterfs.
> *** Error code 1
>
> For a quick hack, I removed
> #include "logging.h"
> from libglusterfs/src/transport.c
>
> Next try.
>
> Stops at:
> gcc -DPACKAGE_NAME=\"glusterfs\" -DPACKAGE_TARNAME=\"glusterfs\"
> -DPACKAGE_VERSION=\"1.3.0-pre3\" "-DPACKAGE_STRING=\"glusterfs
> 1.3.0-pre3\"" -DPACKAGE_BUGREPORT=\"gluster-devel at nongnu.org\"
> -DPACKAGE=\"glusterfs\" -DVERSION=\"1.3.0-pre3\" -DSTDC_HEADERS=1
> -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1
> -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1
> -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1
> -DYYTEXT_POINTER=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBDL=1 -DHAVE_LIBFUSE=1
> -DHAVE_BACKTRACE=1 -I. -I. -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
> -DXLATORDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/xlator\"
> -DSCHEDULERDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/scheduler\"
> -DTRANSPORTDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/transport\"
> -DYY_NO_UNPUT -fPIC -Wall -g -shared -nostartfiles -rdynamic
> -L/usr/local/lib -L/usr/lib -I/usr/include -I/usr/local/include -MT
> libglusterfs_la-epoll.lo -MD -MP -MF .deps/libglusterfs_la-epoll.Tpo -c
> epoll.c  -fPIC -DPIC -o .libs/libglusterfs_la-epoll.o
> epoll.c:20:23: sys/epoll.h: No such file or directory
> *** Error code 1
>
> Stop in /src/glusterfs-1.3.0-pre3/libglusterfs/src.
> *** Error code 1
>
> Stop in /src/glusterfs-1.3.0-pre3/libglusterfs.
> *** Error code 1
>
> Ouch, no epoll on !Linux. Configure recognized that, but the epoll stuff
> got into the Makefile.
>
> BTW, FreeBSD (not-just-Free BSD) has kqueue, Solaris has /dev/poll,
> Linux has epoll and there is libevent, which supports all of these.
> Wouldn't be possible to use that? It should give a (more) portable
> version.
>
> Removed epoll instances from the Makefile, retry:
> if gcc -DPACKAGE_NAME=\"glusterfs\" -DPACKAGE_TARNAME=\"glusterfs\"
> -DPACKAGE_VERSION=\"1.3.0-pre3\" -DPACKAGE_STRING=\"glusterfs\
> 1.3.0-pre3\" -DPACKAGE_BUGREPORT=\"gluster-devel at nongnu.org\"
> -DPACKAGE=\"glusterfs\" -DVERSION=\"1.3.0-pre3\" -DSTDC_HEADERS=1
> -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1
> -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1
> -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1
> -DYYTEXT_POINTER=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBDL=1 -DHAVE_LIBFUSE=1
> -DHAVE_BACKTRACE=1 -I. -I.     -fPIC -D_FILE_OFFSET_BITS=64
> -D_GNU_SOURCE -Wall  -I../../../../libglusterfs/src -shared
> -nostartfiles -L/usr/local/lib -L/usr/lib -I/usr/include
> -I/usr/local/include -MT unify.o -MD -MP -MF ".deps/unify.Tpo" -c -o
> unify.o unify.c;  then mv -f ".deps/unify.Tpo" ".deps/unify.Po"; else rm
> -f ".deps/unify.Tpo"; exit 1; fi
> unify.c: In function `gcd_path':
> unify.c:48: warning: implicit declaration of function `strndup'
> unify.c:48: warning: pointer/integer type mismatch in conditional
> expression
> unify.c: In function `gf_basename':
> unify.c:54: warning: implicit declaration of function `basename'
> unify.c:54: warning: initialization makes pointer from integer without a
> cast
> unify.c: In function `unify_readv':
> unify.c:443: error: `EBADFD' undeclared (first use in this function)
> unify.c:443: error: (Each undeclared identifier is reported only once
> unify.c:443: error: for each function it appears in.)
> unify.c: In function `unify_writev':
> unify.c:482: error: `EBADFD' undeclared (first use in this function)
> unify.c: In function `unify_ftruncate':
> unify.c:523: error: `EBADFD' undeclared (first use in this function)
> unify.c: In function `unify_fgetattr':
> unify.c:561: error: `EBADFD' undeclared (first use in this function)
> unify.c: In function `unify_flush':
> unify.c:594: error: `EBADFD' undeclared (first use in this function)
> unify.c: In function `unify_release':
> unify.c:628: error: `EBADFD' undeclared (first use in this function)
> unify.c: In function `unify_fsync':
> unify.c:665: error: `EBADFD' undeclared (first use in this function)
> unify.c: In function `unify_lk':
> unify.c:704: error: `EBADFD' undeclared (first use in this function)
> *** Error code 1
>
> Stop in /src/glusterfs-1.3.0-pre3/xlators/cluster/unify/src.
> *** Error code 1
>
> Stop in /src/glusterfs-1.3.0-pre3/xlators/cluster/unify.
> *** Error code 1
>
> Stop in /src/glusterfs-1.3.0-pre3/xlators/cluster.
> *** Error code 1
>
> Erm, not EBADFD, but EBADF. sed it and recompile:
> if gcc -DPACKAGE_NAME=\"glusterfs\" -DPACKAGE_TARNAME=\"glusterfs\"
> -DPACKAGE_VERSION=\"1.3.0-pre3\" -DPACKAGE_STRING=\"glusterfs\
> 1.3.0-pre3\" -DPACKAGE_BUGREPORT=\"gluster-devel at nongnu.org\"
> -DPACKAGE=\"glusterfs\" -DVERSION=\"1.3.0-pre3\" -DSTDC_HEADERS=1
> -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1
> -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1
> -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1
> -DYYTEXT_POINTER=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBDL=1 -DHAVE_LIBFUSE=1
> -DHAVE_BACKTRACE=1 -I. -I.     -fPIC -D_FILE_OFFSET_BITS=64
> -D_GNU_SOURCE -Wall  -I../../../../libglusterfs/src -shared
> -nostartfiles -L/usr/local/lib -L/usr/lib -I/usr/include
> -I/usr/local/include -MT posix.o -MD -MP -MF ".deps/posix.Tpo" -c -o
> posix.o posix.c;  then mv -f ".deps/posix.Tpo" ".deps/posix.Po"; else rm
> -f ".deps/posix.Tpo"; exit 1; fi
> In file included from posix.c:23:
> posix.h:6:23: sys/xattr.h: No such file or directory
> posix.h:10:27: linux/limits.h: No such file or directory
> posix.c: In function `posix_create':
> posix.c:405: error: `O_LARGEFILE' undeclared (first use in this function)
> posix.c:405: error: (Each undeclared identifier is reported only once
> posix.c:405: error: for each function it appears in.)
> posix.c: In function `posix_fsync':
> posix.c:679: warning: implicit declaration of function `fdatasync'
> posix.c: In function `posix_setxattr':
> posix.c:710: warning: implicit declaration of function `lsetxattr'
> posix.c: In function `posix_getxattr':
> posix.c:736: warning: implicit declaration of function `lgetxattr'
> posix.c: In function `posix_listxattr':
> posix.c:759: warning: implicit declaration of function `llistxattr'
> posix.c: In function `posix_removexattr':
> posix.c:783: warning: implicit declaration of function `lremovexattr'
> posix.c: In function `posix_opendir':
> posix.c:808: error: `O_LARGEFILE' undeclared (first use in this function)
> posix.c:808: error: `O_DIRECTORY' undeclared (first use in this function)
> *** Error code 1
>
> Stop in /src/glusterfs-1.3.0-pre3/xlators/storage/posix/src.
> *** Error code 1
>
> Stop in /src/glusterfs-1.3.0-pre3/xlators/storage/posix.
> *** Error code 1
>
> Stop in /src/glusterfs-1.3.0-pre3/xlators/storage.
> *** Error code 1
>
> Stop in /src/glusterfs-1.3.0-pre3/xlators.
> *** Error code 1
>
> For the extattr stuff, this rsync patch should give some pointers:
> http://lists.samba.org/archive/rsync/2006-November/016653.html
>
> O_LARGEFILE and O_DIRECTORY is pretty much Linux related.
>
> That how far I got with this today. :)
>
> Any help/ideas from the developers? It would be really cool to have such
> a thing on FreeBSD.
>
> Thanks,
>
>
> _______________________________________________
> Gluster-devel mailing list
> Gluster-devel at nongnu.org
> http://lists.nongnu.org/mailman/listinfo/gluster-devel
>



-- 
Anand V. Avati



More information about the Gluster-devel mailing list