[PATCH] reiserfs endianness: sanitize reiserfs_key union
authorAl Viro <viro@www.linux.org.uk>
Sun, 1 May 2005 15:59:19 +0000 (08:59 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Sun, 1 May 2005 15:59:19 +0000 (08:59 -0700)
commitf8e08a8466c4ac5f61b4bdb6338fd97eedb9c9e8
tree082b472e19d4b21f2ecb0eb486e961b16ffeaab0
parent6b9f5829e6e3af44f20c681e26524c637d4f82ff
[PATCH] reiserfs endianness: sanitize reiserfs_key union

Since we only access reiserfs_key ->u.k_offset_v2 guts in four helper
functions, we are free to sanitize those, as long as

- layout of the structure is unchanged (it's on-disk object)

- behaviour of these helpers is same as before.

Patch kills the mess with endianness-dependent bitfields and replaces them
with a single __le64.  Helpers are switched to straightforward shift/and/or.

Benefits:

- exact same definitions for little- and big-endian architectures; no ifdefs
  in sight.

- generate the same code on little-endian and improved on big-endian.

- doesn't rely on lousy bitfields handling in gcc codegenerator.

- happens to be standard C (unsigned long long is not a valid type for a
  bitfield; it's a gccism and not well-implemented one, at that).

Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk>
Cc: <reiserfs-dev@namesys.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
include/linux/reiserfs_fs.h