diff options
Diffstat (limited to 'fs/xfs/xfs_btree.h')
-rw-r--r-- | fs/xfs/xfs_btree.h | 79 |
1 files changed, 12 insertions, 67 deletions
diff --git a/fs/xfs/xfs_btree.h b/fs/xfs/xfs_btree.h index 06729b67ad58..91e34f21bace 100644 --- a/fs/xfs/xfs_btree.h +++ b/fs/xfs/xfs_btree.h | |||
@@ -27,73 +27,6 @@ struct xfs_trans; | |||
27 | extern kmem_zone_t *xfs_btree_cur_zone; | 27 | extern kmem_zone_t *xfs_btree_cur_zone; |
28 | 28 | ||
29 | /* | 29 | /* |
30 | * This nonsense is to make -wlint happy. | ||
31 | */ | ||
32 | #define XFS_LOOKUP_EQ ((xfs_lookup_t)XFS_LOOKUP_EQi) | ||
33 | #define XFS_LOOKUP_LE ((xfs_lookup_t)XFS_LOOKUP_LEi) | ||
34 | #define XFS_LOOKUP_GE ((xfs_lookup_t)XFS_LOOKUP_GEi) | ||
35 | |||
36 | #define XFS_BTNUM_BNO ((xfs_btnum_t)XFS_BTNUM_BNOi) | ||
37 | #define XFS_BTNUM_CNT ((xfs_btnum_t)XFS_BTNUM_CNTi) | ||
38 | #define XFS_BTNUM_BMAP ((xfs_btnum_t)XFS_BTNUM_BMAPi) | ||
39 | #define XFS_BTNUM_INO ((xfs_btnum_t)XFS_BTNUM_INOi) | ||
40 | |||
41 | /* | ||
42 | * Generic btree header. | ||
43 | * | ||
44 | * This is a combination of the actual format used on disk for short and long | ||
45 | * format btrees. The first three fields are shared by both format, but the | ||
46 | * pointers are different and should be used with care. | ||
47 | * | ||
48 | * To get the size of the actual short or long form headers please use the size | ||
49 | * macros below. Never use sizeof(xfs_btree_block). | ||
50 | * | ||
51 | * The blkno, crc, lsn, owner and uuid fields are only available in filesystems | ||
52 | * with the crc feature bit, and all accesses to them must be conditional on | ||
53 | * that flag. | ||
54 | */ | ||
55 | struct xfs_btree_block { | ||
56 | __be32 bb_magic; /* magic number for block type */ | ||
57 | __be16 bb_level; /* 0 is a leaf */ | ||
58 | __be16 bb_numrecs; /* current # of data records */ | ||
59 | union { | ||
60 | struct { | ||
61 | __be32 bb_leftsib; | ||
62 | __be32 bb_rightsib; | ||
63 | |||
64 | __be64 bb_blkno; | ||
65 | __be64 bb_lsn; | ||
66 | uuid_t bb_uuid; | ||
67 | __be32 bb_owner; | ||
68 | __le32 bb_crc; | ||
69 | } s; /* short form pointers */ | ||
70 | struct { | ||
71 | __be64 bb_leftsib; | ||
72 | __be64 bb_rightsib; | ||
73 | |||
74 | __be64 bb_blkno; | ||
75 | __be64 bb_lsn; | ||
76 | uuid_t bb_uuid; | ||
77 | __be64 bb_owner; | ||
78 | __le32 bb_crc; | ||
79 | __be32 bb_pad; /* padding for alignment */ | ||
80 | } l; /* long form pointers */ | ||
81 | } bb_u; /* rest */ | ||
82 | }; | ||
83 | |||
84 | #define XFS_BTREE_SBLOCK_LEN 16 /* size of a short form block */ | ||
85 | #define XFS_BTREE_LBLOCK_LEN 24 /* size of a long form block */ | ||
86 | |||
87 | /* sizes of CRC enabled btree blocks */ | ||
88 | #define XFS_BTREE_SBLOCK_CRC_LEN (XFS_BTREE_SBLOCK_LEN + 40) | ||
89 | #define XFS_BTREE_LBLOCK_CRC_LEN (XFS_BTREE_LBLOCK_LEN + 48) | ||
90 | |||
91 | #define XFS_BTREE_SBLOCK_CRC_OFF \ | ||
92 | offsetof(struct xfs_btree_block, bb_u.s.bb_crc) | ||
93 | #define XFS_BTREE_LBLOCK_CRC_OFF \ | ||
94 | offsetof(struct xfs_btree_block, bb_u.l.bb_crc) | ||
95 | |||
96 | /* | ||
97 | * Generic key, ptr and record wrapper structures. | 30 | * Generic key, ptr and record wrapper structures. |
98 | * | 31 | * |
99 | * These are disk format structures, and are converted where necessary | 32 | * These are disk format structures, and are converted where necessary |
@@ -119,6 +52,18 @@ union xfs_btree_rec { | |||
119 | }; | 52 | }; |
120 | 53 | ||
121 | /* | 54 | /* |
55 | * This nonsense is to make -wlint happy. | ||
56 | */ | ||
57 | #define XFS_LOOKUP_EQ ((xfs_lookup_t)XFS_LOOKUP_EQi) | ||
58 | #define XFS_LOOKUP_LE ((xfs_lookup_t)XFS_LOOKUP_LEi) | ||
59 | #define XFS_LOOKUP_GE ((xfs_lookup_t)XFS_LOOKUP_GEi) | ||
60 | |||
61 | #define XFS_BTNUM_BNO ((xfs_btnum_t)XFS_BTNUM_BNOi) | ||
62 | #define XFS_BTNUM_CNT ((xfs_btnum_t)XFS_BTNUM_CNTi) | ||
63 | #define XFS_BTNUM_BMAP ((xfs_btnum_t)XFS_BTNUM_BMAPi) | ||
64 | #define XFS_BTNUM_INO ((xfs_btnum_t)XFS_BTNUM_INOi) | ||
65 | |||
66 | /* | ||
122 | * For logging record fields. | 67 | * For logging record fields. |
123 | */ | 68 | */ |
124 | #define XFS_BB_MAGIC (1 << 0) | 69 | #define XFS_BB_MAGIC (1 << 0) |