Messages in this thread | | | Date | Tue, 26 Feb 2008 12:05:59 -0800 | From | Eric Sandeen <> | Subject | Re: [xfs-masters] Re: filesystem corruption on xfs after 2.6.25-rc1 (bisected, powerpc related?) |
| |
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
| |