diff options
author | Christoph Hellwig <hch@infradead.org> | 2008-10-30 01:54:12 -0400 |
---|---|---|
committer | Lachlan McIlroy <lachlan@sgi.com> | 2008-10-30 01:54:12 -0400 |
commit | de227dd9604934d2a6d33cd332d1be431719c93e (patch) | |
tree | 36254901d67015aa2f2621bea47f8082c31c8e55 /fs | |
parent | 561f7d17390d00444e6cd0b02b7516c91528082e (diff) |
[XFS] add generic btree types
Add generic union types for btree pointers, keys and records. The generic
btree pointer contains either a 32 and 64bit big endian scalar 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.
SGI-PV: 985583
SGI-Modid: xfs-linux-melb:xfs-kern:32178a
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
Signed-off-by: Bill O'Donnell <billodo@sgi.com>
Signed-off-by: David Chinner <david@fromorbit.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/xfs/xfs_btree.h | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/fs/xfs/xfs_btree.h b/fs/xfs/xfs_btree.h index d30ee7498606..428e81f0e27e 100644 --- a/fs/xfs/xfs_btree.h +++ b/fs/xfs/xfs_btree.h | |||
@@ -80,6 +80,31 @@ typedef struct xfs_btree_block { | |||
80 | } xfs_btree_block_t; | 80 | } xfs_btree_block_t; |
81 | 81 | ||
82 | /* | 82 | /* |
83 | * Generic key, ptr and record wrapper structures. | ||
84 | * | ||
85 | * These are disk format structures, and are converted where necessary | ||
86 | * by the btree specific code that needs to interpret them. | ||
87 | */ | ||
88 | union xfs_btree_ptr { | ||
89 | __be32 s; /* short form ptr */ | ||
90 | __be64 l; /* long form ptr */ | ||
91 | }; | ||
92 | |||
93 | union xfs_btree_key { | ||
94 | xfs_bmbt_key_t bmbt; | ||
95 | xfs_bmdr_key_t bmbr; /* bmbt root block */ | ||
96 | xfs_alloc_key_t alloc; | ||
97 | xfs_inobt_key_t inobt; | ||
98 | }; | ||
99 | |||
100 | union xfs_btree_rec { | ||
101 | xfs_bmbt_rec_t bmbt; | ||
102 | xfs_bmdr_rec_t bmbr; /* bmbt root block */ | ||
103 | xfs_alloc_rec_t alloc; | ||
104 | xfs_inobt_rec_t inobt; | ||
105 | }; | ||
106 | |||
107 | /* | ||
83 | * For logging record fields. | 108 | * For logging record fields. |
84 | */ | 109 | */ |
85 | #define XFS_BB_MAGIC 0x01 | 110 | #define XFS_BB_MAGIC 0x01 |