[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