[PATCH] reiserfs endianness: comp_short_keys() cleanup

comp_short_keys() massaged into sane form, which kills the last place where
pointer to in_core_key (or any object containing such) would be cast to or
from something else.  At that point we are free to change layout of
in_core_key - nothing depends on it anymore.

So we drop the mess with union in there and simply use (unconditional) __u64
k_offset and __u8 k_type instead; places using in_core_key switched to those.
That gives _far_ better code than current mess - on all platforms.

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>
This commit is contained in:
Al Viro
2005-05-01 08:59:19 -07:00
committed by Linus Torvalds
parent b8cc936f62
commit 6b9f5829e6
4 changed files with 27 additions and 66 deletions

View File

@@ -218,8 +218,8 @@ static int finish_unfinished (struct super_block * s)
item = B_I_PITEM (bh, ih);
obj_key.on_disk_key.k_dir_id = le32_to_cpu (*(__le32 *)item);
obj_key.on_disk_key.k_objectid = le32_to_cpu (ih->ih_key.k_objectid);
obj_key.on_disk_key.u.k_offset_v1.k_offset = 0;
obj_key.on_disk_key.u.k_offset_v1.k_uniqueness = 0;
obj_key.on_disk_key.k_offset = 0;
obj_key.on_disk_key.k_type = 0;
pathrelse (&path);