Gaudenz Steinlin wrote: > On Tue, Feb 26, 2008 at 01:13:56AM +0100, Rafael J. Wysocki wrote: >> On Tuesday, 26 of February 2008, Christoph Hellwig wrote: >>> On Tue, Feb 26, 2008 at 12:52:56AM +0100, Rafael J. Wysocki wrote: >>>>> I'm not suggesting a partial revert; I just wonder which part of the >>>>> change is causing the problem, as part of the debugging process. > > I debuged this a bit further by testing the 4 changed functions > individually. The problem only occurs with the new version of > xfs_lowbit64.
FWIW, Dave & I did some testing/debugging on 32-bit powerpc, and it is indeed only xfs_lowbit64 which is doing the wrong thing on that arch, because generic find_next_bit is doing the wrong thing on big-endian 32-bit systems, for sizes > 32 bits, near as I can tell. Rather than reverting it all, I think just changing xfs_lowbit64 back to: int xfs_lowbit64( __uint64_t v) { __uint32_t w = (__uint32_t)v; int n = 0; if (w) { /* lower bits */ n = ffs(w); } else { /* upper bits */ w = (__uint32_t)(v >> 32); if (w && (n = ffs(w))) n += 32; } return n - 1; } for now should fix it (this is essentially just ffs64()) -Eric -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/