add generic btree types
PATCH 3/26 add generic btree types
Add generic union types for btree pointers, keys and records. The generic btree pointer contains a 32 and 64bit big endian type for short and long form btrees, and the key and record contain the relevant type for each possible btree.
Split out from a bigger patch from Dave Chinner and simplified a little further.
Signed-off-by Christoph Hellwig <[email protected]>
fs/xfs/xfs_btree.h +25 -0
@@ -79,6 +79,31 @@ typedef struct xfs_btree_block { } bb_u;/* rest */ } xfs_btree_block_t; +/* +* Generic key, ptr and record wrapper structures. +* +* These are disk format structures, and are converted where necessary +* by the btree specific code that needs to interpret them. +*/ +union xfs_btree_ptr { +__be32 s;/* short form ptr */ +__be64 l;/* long form ptr */ +}; + +union xfs_btree_key { +xfs_bmbt_key_t bmbt; +xfs_bmdr_key_t bmbr;/* bmbt root block */ +xfs_alloc_key_t alloc; +xfs_inobt_key_t inobt; +}; + +union xfs_btree_rec { +xfs_bmbt_rec_t bmbt; +xfs_bmdr_rec_t bmbr;/* bmbt root block */ +xfs_alloc_rec_t alloc; +xfs_inobt_rec_t inobt; +}; +/* * For logging record fields. */