Saying: "Support for heterogeneous clusters of nodes with a mixture of 32-bit and 64-bit, little-endian (x86, x86_64, ia64) and big-endian (ppc64) architectures."
But we have it passing for all little endian arches (including ppc64el)... and not for s390x (the only current big-endian arch we have support for).
Despite what Oracle docs say, this function looks suspicious:
int ocfs2_set_bit(int nr,void * addr)
{
int mask, retval;
unsigned char *ADDR = (unsigned char *) addr;
Weird,
We have:
https:/ /docs.oracle. com/cd/ E37670_ 01/E37355/ html/ol_ about_ocfs2. html
Saying: "Support for heterogeneous clusters of nodes with a mixture of 32-bit and 64-bit, little-endian (x86, x86_64, ia64) and big-endian (ppc64) architectures."
But we have it passing for all little endian arches (including ppc64el)... and not for s390x (the only current big-endian arch we have support for).
Despite what Oracle docs say, this function looks suspicious:
int ocfs2_set_bit(int nr,void * addr)
{
int mask, retval;
unsigned char *ADDR = (unsigned char *) addr;
ADDR += nr >> 3;
mask = 1 << (nr & 0x07);
retval = (mask & *ADDR) != 0;
*ADDR |= mask;
return retval;
}
So, despite using single *u8 for ADDR, we have:
*u8 ADR = (u8 *) (u32 *) addr;
and that might explain why addr is 0;
Also, we have:
(mask & *ADDR) -> a dereference without a cast (specially important if we are differentiating little and big endian).