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).

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1745155

Title:
  o2image fails on s390x

To manage notifications about this bug go to:
https://bugs.launchpad.net/ocfs2-tools/+bug/1745155/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to