On Wed, Aug 19, 2020 at 02:43:22PM -0700, Darrick J. Wong wrote: > On Wed, Aug 19, 2020 at 09:35:35AM +1000, Dave Chinner wrote: > > On Mon, Aug 17, 2020 at 03:57:39PM -0700, Darrick J. Wong wrote: > The correct approach (I think) is to perform the shifting and masking on > the raw __be64 value before converting them to incore format via > be32_to_cpu, but now I have to work out all four cases by hand instead > of letting the compiler do the legwork for me. I don't remember if it's > correct to go around shifting and masking __be64 values. > > I guess the good news is that at least we have generic/402 to catch > these kinds of persistence problems, but ugh. > > Anyway, what are you afraid of? The C compiler smoking crack and not > actually overlapping the two union elements? We could control for > that... No, I just didn't really like the way the code in the encode/decode helpers turned out... Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx