... if someone wants to build last glusterfs (both client and server)
there are some issues that should be settled before compilation ends
with success.
[*] Fetching and untarring glusterfs 1.3.3 from gluster.org:
[root@slayer:p3][/u/slayer]# tar zxvf glusterfs-1.3.3.tar.gz
[*] Optional step: installing gcc422 (last stable):
[root@slayer:p3][~] cd /usr/ports/lang/gcc42; make install; make clean
[*] Installing depended libs and headers: argp.h from gnu C library:
[root@slayer:p3][~] cd /usr/ports/devel/argp-standalone; make install;
make clean
argp-standalone-1.3 Standalone version of arguments parsing functions
from GLIB
[*] Installing depended libs and headers: fuse libs 2.7.X (at least this
version in port freebsd system):
[root@slayer:p3][~] cd /usr/ports/dsysutils/fusefs-libs; make install;
make clean
fusefs-libs-2.7.0_1 FUSE allows filesystem implementation in userspace
[*] Patching some strange things: for gcc int32_t C type combinations
(in attached patch file), in other words - just changing with int32_t (I
do not know actually the real meaning to user int32_t - platform
independancy?), some unknown define statements.
[*] Configuring and making with following script:
#!/bin/sh
make clean
./configure --disable-ibverbs LDFLAGS="-L/usr/local/lib -L/usr/lib
-I/usr/include -I/usr/local/include" LIBS="-lpthread -liconv -largp
-lexecinfo" CC=gcc42 CXX=g++42
make CFLAGS="-L/usr/local/lib -L/usr/lib -I/usr/include
-I/usr/local/include" LIBS="-lpthread -liconv -largp -lexecinfo"
CC=gcc42 CXX=g++42
Did anyone try to use glusterfs in production or almost-production
environments?
2glusterfs developers: It is a pity that such simple patch could not be
maintained by your team, at least, glusterfs freebsd ports will increase
testing glusterfs on freebsd.
--
Best regards,
Oleg Gorokhov
Yandex, System administrator
diff -u -u -r ./glusterfs-fuse/src/fuse-bridge.c ../glusterfs-1.3.3_good/glusterfs-fuse/src/fuse-bridge.c
--- ./glusterfs-fuse/src/fuse-bridge.c 2007-09-27 16:38:01.000000000 +0400
+++ ../glusterfs-1.3.3_good/glusterfs-fuse/src/fuse-bridge.c 2007-10-03 12:20:51.000000000 +0400
@@ -37,6 +37,10 @@
#define BIG_FUSE_CHANNEL_SIZE 1048576
+#ifndef ENODATA
+#define ENODATA ENOMSG
+#endif
+
call_pool_t pool;
struct fuse_private {
diff -u -u -r ./glusterfs-fuse/src/glusterfs.c ../glusterfs-1.3.3_good/glusterfs-fuse/src/glusterfs.c
--- ./glusterfs-fuse/src/glusterfs.c 2007-08-14 13:44:15.000000000 +0400
+++ ../glusterfs-1.3.3_good/glusterfs-fuse/src/glusterfs.c 2007-10-03 12:39:42.000000000 +0400
@@ -30,7 +30,7 @@
#include <stdint.h>
#include <signal.h>
#include <pthread.h>
-#include <malloc.h>
+//#include <malloc.h>
#include "xlator.h"
diff -u -u -r ./glusterfsd/src/glusterfsd.c ../glusterfs-1.3.3_good/glusterfsd/src/glusterfsd.c
--- ./glusterfsd/src/glusterfsd.c 2007-09-29 22:37:15.000000000 +0400
+++ ../glusterfs-1.3.3_good/glusterfsd/src/glusterfsd.c 2007-10-03 13:08:35.000000000 +0400
@@ -28,7 +28,7 @@
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
-#include <malloc.h>
+//#include <malloc.h>
#ifdef HAVE_ARGP
#include <argp.h>
diff -u -u -r ./libglusterfs/src/common-utils.c ../glusterfs-1.3.3_good/libglusterfs/src/common-utils.c
--- ./libglusterfs/src/common-utils.c 2007-08-27 16:08:40.000000000 +0400
+++ ../glusterfs-1.3.3_good/libglusterfs/src/common-utils.c 2007-10-03 13:37:22.000000000 +0400
@@ -146,7 +146,7 @@
int len;
};
-in_addr_t
+uint32_t
gf_resolve_ip (const char *hostname, void **dnscache)
{
in_addr_t addr = INADDR_NONE;
diff -u -u -r ./libglusterfs/src/common-utils.h ../glusterfs-1.3.3_good/libglusterfs/src/common-utils.h
--- ./libglusterfs/src/common-utils.h 2007-08-03 08:22:14.000000000 +0400
+++ ../glusterfs-1.3.3_good/libglusterfs/src/common-utils.h 2007-10-03 13:36:17.000000000 +0400
@@ -50,7 +50,7 @@
int32_t gf_full_readv (int32_t fd, const struct iovec *vector, int32_t count);
int32_t gf_full_writev (int32_t fd, const struct iovec *vector, int32_t count);
-in_addr_t gf_resolve_ip (const char *hostname, void **dnscache);
+uint32_t gf_resolve_ip (const char *hostname, void **dnscache);
int64_t gf_str_to_long_long (const char *number);
#if HAVE_BACKTRACE
diff -u -u -r ./libglusterfs/src/logging.c ../glusterfs-1.3.3_good/libglusterfs/src/logging.c
--- ./libglusterfs/src/logging.c 2007-08-01 08:46:59.000000000 +0400
+++ ../glusterfs-1.3.3_good/libglusterfs/src/logging.c 2007-10-03 13:29:32.000000000 +0400
@@ -47,7 +47,7 @@
gf_log_loglevel = loglevel = level;
}
-int32_t
+int
gf_log_init (const char *filename)
{
if (!filename){
@@ -68,11 +68,11 @@
return (0);
}
-int32_t
+int
_gf_log (const char *domain,
const char *file,
const char *function,
- int32_t line,
+ int line,
gf_loglevel_t level, const char *fmt, ...)
{
static char *level_strings[] = {"N", "C", "E", "W", "D"};
diff -u -u -r ./libglusterfs/src/logging.h ../glusterfs-1.3.3_good/libglusterfs/src/logging.h
--- ./libglusterfs/src/logging.h 2007-08-01 08:46:59.000000000 +0400
+++ ../glusterfs-1.3.3_good/libglusterfs/src/logging.h 2007-10-03 12:24:14.000000000 +0400
@@ -41,15 +41,16 @@
_gf_log (dom, __FILE__, __FUNCTION__, __LINE__, levl, ##fmt); \
} while (0)
-int32_t
+int
_gf_log (const char *domain,
const char *file,
const char *function,
- int32_t line,
+ int line,
gf_loglevel_t level,
const char *fmt, ...);
-int32_t gf_log_init (const char *filename);
+int gf_log_init (const char *filename);
+
gf_loglevel_t gf_log_get_loglevel (void);
void gf_log_set_loglevel (gf_loglevel_t level);
diff -u -u -r ./xlators/cluster/afr/src/afr.c ../glusterfs-1.3.3_good/xlators/cluster/afr/src/afr.c
--- ./xlators/cluster/afr/src/afr.c 2007-09-29 22:37:15.000000000 +0400
+++ ../glusterfs-1.3.3_good/xlators/cluster/afr/src/afr.c 2007-10-03 12:13:31.000000000 +0400
@@ -44,6 +44,10 @@
#define AFR_DEBUG_FMT(xl, format, args...) if(((afr_private_t*)(xl)->private)->debug) gf_log ((xl)->name, GF_LOG_DEBUG, "AFRDEBUG:" format, ##args);
#define AFR_DEBUG(xl) if(((afr_private_t*)xl->private)->debug) gf_log (xl->name, GF_LOG_DEBUG, "AFRDEBUG:");
+#ifndef ENODATA
+#define ENODATA ENOMSG
+#endif
+
static int32_t
afr_get_num_copies (const char *path, xlator_t *this)
{