Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: XinFeng Liu <xinfeng.liu-Re5JQEeQqe8AvxtiuMwx3w <at> public.gmane.org>
Subject: Re: Unable to get volume name (GlusterFS 3.3 on Solaris 11)
Newsgroups: gmane.comp.file-systems.gluster.devel
Date: Monday 9th July 2012 10:53:03 UTC (over 5 years ago)
Hi Amar,
Thanks for your quick reply. My comments are inlined below:

2012/7/9 Amar Tumballi :
> Hi Liu,
>
>
>> I built GlusterFS 3.3 on Solaris 11, but  unable to create a volume.
>>
>
> Thats really good news !! You needed to make some changes in the code for
> building on Solaris or did the source of glusterfs-3.3.0 work out of the
> box?
>
> If you needed a patch, then it would be great if you can submit it, so we
> can review and apply it upstream.
>
I made a few changes to pass the compilation. Before I submit the
change, I need make it works correctly. The changes are small but I
feel it might not easy to make it work on Solaris because of
differences between solaris and linux.

Here's my build steps, correct me if anything is wrong.

$ sudo pkg install pkg:/developer/lexer/flex
$ sudo pkg install pkg:/developer/parser/bison
$ sudo pkg install libfuse  (will install libfuse and
pkg:/system/file-system/uvfs)
$ sudo pkg install pkg:/developer/gcc-45

$CFLAGS=-m64 ./configure  (need pass -m64 in CFLAGS, otherwise libtool
will use 32-bit)

GlusterFS configure summary
===========================
FUSE client        : no
Infiniband verbs   : yes
epoll IO multiplex : no
argp-standalone    : yes
fusermount         : no
readline           : yes
georeplication     : no

$gmake
Now need make a few code changes:

1) glusterfs-3.3.0/rpc/xdr/src$ vi nlm4-xdr.h
#define  u_int32_t       uint32_t
#define  u_int64_t       uint64_t

2) glusterfs-3.3.0$ vi ./libglusterfs/src/compat.h

/* This patch is not present in Solaris 10 and before */
/*
#ifndef dirfd
#define dirfd(dirp)   ((dirp)->dd_fd)
#endif
*/
Solaris 11 uses POSIX definition for "DIR"
(https://blogs.oracle.com/paulie/entry/compiling_alpine_on_solaris_11)

3) glusterfs-3.3.0/cli/src$ vi cli-cmd-volume.c
in cli_get_detail_status() , add
#ifdef GF_LINUX_HOST_OS
..
#endif
for Linux-only attributes fs_name, mount_options, device, inode_size.

$ sudo gmake install
$ /usr/local/sbin/glusterfs --version
Bus Error (core dumped)

This is invalid address alignment issue on for 64-bit app on SPARC system.

glusterfs-3.3.0/libglusterfs/src$ vi mem-pool.c

/*
#define GF_MEM_POOL_PAD_BOUNDARY         (GF_MEM_POOL_LIST_BOUNDARY  +
GF_MEM_POOL_PTR + sizeof(int))
*/
#define GF_MEM_POOL_PAD_BOUNDARY         (GF_MEM_POOL_LIST_BOUNDARY  +
GF_MEM_POOL_PTR + sizeof(long))

That's all for the code changes.

>
>> # gluster volume create test-volume :/test-vol
>> (/test-vol is a ZFS filesystem)
>>
>> The glusterd's log said:
>> ...
>> [2012-07-09 17:12:45.417496] I
>> [glusterd-volume-ops.c:83:glusterd_handle_create_volume] 0-glusterd:
>> Received create volume req
>> [2012-07-09 17:12:45.417761] E
>> [glusterd-volume-ops.c:107:glusterd_handle_create_volume] 0-: Unable
>> to get volume name
>> ...
>>
>> I looked at the source code, it seems "dict_get_str (dict, "volname",
>> &volname)" did not succeed. Any hint about it?
>>
>
> Looks like the issue can be present both at 'cli/' part of the code, or
even
> at the glusterd. Need log of 'glusterd --debug' run, and CLI cmd from
other
> terminal.
>

I did use  'glusterd --debug'. Anything else I shoud try?

BTW, gdb or dbx does not allow me to debug glusterd, it's weird.
...
Running: glusterd --debug
(process id 4047)
[email protected] ([email protected]) signal ILL (illegal addressing mode) in _sparcv9_fmadd_probe
at 0xffffffff733792fc
0xffffffff733792fc: _sparcv9_fmadd_probe+0x000c:	fmaddd   %f0, %f0, %f2,
%f0
(dbx) where
current thread: [email protected]
=>[1] _sparcv9_fmadd_probe(0x0, 0x0, 0x0, 0x1, 0x7,
0xffffffff7e902a40), at 0xffffffff733792fc
  [2] OPENSSL_cpuid_setup(0xffffffff73570000, 0xffffffff735712a8,
0x119400, 0xffffffff73570000, 0xe, 0x6), at 0xffffffff73378fb8
  [3] _init(0x0, 0x0, 0x0, 0xffffffff7f743080, 0x3,
0xffffffff7e902a40), at 0xffffffff73449fe8
  [4] call_init(0xffffffff7f73e758, 0xffffffff73449fe0, 0x80,
0xffdfffff, 0x400000, 0xffffffff7ea01068), at 0xffffffff7f61c46c
  [5] setup(0x46, 0xffffffff7f200910, 0x0, 0xc, 0x0, 0x46), at
0xffffffff7f61b7e8
  [6] _setup(0x3c084, 0xffffffffffffffff, 0x0, 0xffffffff7ffffc68,
0xffffffff7f73ee60, 0x100000040), at 0xffffffff7f62d7bc
  [7] _rt_boot(0x0, 0x0, 0x0, 0x0, 0x0, 0x0), at 0xffffffff7f60dce0
(dbx)


Thanks,
Xinfeng

> Regards,
> Amar
 
CD: 3ms