[Gluster-devel] [Solved] Re: Unable to get volume name (GlusterFS 3.3 on Solaris 11)
XinFeng Liu
xinfeng.liu at gmail.com
Tue Jul 10 11:35:33 UTC 2012
>> I looked at the source code, it seems "dict_get_str (dict, "volname",
>> &volname)" did not succeed. Any hint about it?
I found the reason:
$ vi ./cli/src/cli-rpc-ops.c
ret = dict_allocate_and_serialize (dict,
&req.dict.dict_val,
(size_t *)&req.dict.dict_len);
size_t is ulong_t, while dict_len's type is uint_t, on 64-bit
Big-Endian system like SPARC, it causes the wrong result: dict_len
becomes 0.
I find that same changes are needed at too many places , so I decided
to give up building 64-bit SPARC.
Then tried building 32-bit by modifying configure.ac, configure to remove "-m64"
$ CFLAGS="-m32 -g" ./configure
Run gluster volume create ... got bus error again (this is SPARC), the
problem is in hashfn.c
libglusterfs/src$ vi hashfn.c
change
#define get16bits(d) (*((const uint16_t *) (d)))
To:
static inline uint16_t get16bits(const char *data)
{
return ((*data & 0x00ffU)|(*(data+1) & 0xff00U));
}
Then things look fine.
BTW, the previous " signal ILL" was caused by openssl checking
processor capabilities, it's not a problem. $ echo "ignore ILL" >
~/.dbxrc , solve the debugging issue.
Regards,
Xinfeng Liu
More information about the Gluster-devel
mailing list