[Gluster-devel] [Solved] Re: Unable to get volume name (GlusterFS 3.3 on Solaris 11)

John Mark Walker johnmark at redhat.com
Tue Jul 10 13:45:56 UTC 2012


Thank you for your investigation of this. Would you like to help us make sure that GlusterFS works cleanly on 64-bit SPARC? 

-JM


----- Original Message -----
> >> 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
> 
> _______________________________________________
> Gluster-devel mailing list
> Gluster-devel at nongnu.org
> https://lists.nongnu.org/mailman/listinfo/gluster-devel
> 




More information about the Gluster-devel mailing list