19
19
static_assert((value) == (expected), \
20
20
"XFS: value of " #value " is wrong, expected " #expected)
21
21
22
+ #define XFS_CHECK_SB_OFFSET (field , offset ) \
23
+ XFS_CHECK_OFFSET(struct xfs_dsb, field, offset); \
24
+ XFS_CHECK_OFFSET(struct xfs_sb, field, offset);
25
+
22
26
static inline void __init
23
27
xfs_check_ondisk_structs (void )
24
28
{
25
- /* ag/ file structures */
29
+ /* file structures */
26
30
XFS_CHECK_STRUCT_SIZE (struct xfs_acl , 4 );
27
31
XFS_CHECK_STRUCT_SIZE (struct xfs_acl_entry , 12 );
28
- XFS_CHECK_STRUCT_SIZE (struct xfs_agf , 224 );
29
- XFS_CHECK_STRUCT_SIZE (struct xfs_agfl , 36 );
30
- XFS_CHECK_STRUCT_SIZE (struct xfs_agi , 344 );
31
32
XFS_CHECK_STRUCT_SIZE (struct xfs_bmbt_key , 8 );
32
33
XFS_CHECK_STRUCT_SIZE (struct xfs_bmbt_rec , 16 );
33
34
XFS_CHECK_STRUCT_SIZE (struct xfs_bmdr_block , 4 );
34
- XFS_CHECK_STRUCT_SIZE (struct xfs_btree_block_shdr , 48 );
35
- XFS_CHECK_STRUCT_SIZE (struct xfs_btree_block_lhdr , 64 );
36
- XFS_CHECK_STRUCT_SIZE (struct xfs_btree_block , 72 );
37
35
XFS_CHECK_STRUCT_SIZE (struct xfs_dinode , 176 );
38
36
XFS_CHECK_STRUCT_SIZE (struct xfs_disk_dquot , 104 );
39
37
XFS_CHECK_STRUCT_SIZE (struct xfs_dqblk , 136 );
40
- XFS_CHECK_STRUCT_SIZE (struct xfs_dsb , 288 );
41
38
XFS_CHECK_STRUCT_SIZE (struct xfs_dsymlink_hdr , 56 );
39
+ XFS_CHECK_STRUCT_SIZE (xfs_timestamp_t , 8 );
40
+ XFS_CHECK_STRUCT_SIZE (struct xfs_legacy_timestamp , 8 );
41
+
42
+ /* space btrees */
43
+ XFS_CHECK_STRUCT_SIZE (struct xfs_agf , 224 );
44
+ XFS_CHECK_STRUCT_SIZE (struct xfs_agfl , 36 );
45
+ XFS_CHECK_STRUCT_SIZE (struct xfs_agi , 344 );
46
+ XFS_CHECK_STRUCT_SIZE (struct xfs_alloc_rec , 8 );
47
+ XFS_CHECK_STRUCT_SIZE (struct xfs_btree_block , 72 );
48
+ XFS_CHECK_STRUCT_SIZE (struct xfs_btree_block_lhdr , 64 );
49
+ XFS_CHECK_STRUCT_SIZE (struct xfs_btree_block_shdr , 48 );
42
50
XFS_CHECK_STRUCT_SIZE (struct xfs_inobt_key , 4 );
43
51
XFS_CHECK_STRUCT_SIZE (struct xfs_inobt_rec , 16 );
44
52
XFS_CHECK_STRUCT_SIZE (struct xfs_refcount_key , 4 );
45
53
XFS_CHECK_STRUCT_SIZE (struct xfs_refcount_rec , 12 );
46
54
XFS_CHECK_STRUCT_SIZE (struct xfs_rmap_key , 20 );
47
55
XFS_CHECK_STRUCT_SIZE (struct xfs_rmap_rec , 24 );
48
- XFS_CHECK_STRUCT_SIZE (xfs_timestamp_t , 8 );
49
- XFS_CHECK_STRUCT_SIZE (struct xfs_legacy_timestamp , 8 );
50
56
XFS_CHECK_STRUCT_SIZE (xfs_alloc_key_t , 8 );
51
57
XFS_CHECK_STRUCT_SIZE (xfs_alloc_ptr_t , 4 );
52
- XFS_CHECK_STRUCT_SIZE (xfs_alloc_rec_t , 8 );
53
58
XFS_CHECK_STRUCT_SIZE (xfs_inobt_ptr_t , 4 );
54
59
XFS_CHECK_STRUCT_SIZE (xfs_refcount_ptr_t , 4 );
55
60
XFS_CHECK_STRUCT_SIZE (xfs_rmap_ptr_t , 4 );
56
- XFS_CHECK_STRUCT_SIZE (struct xfs_rtsb , 56 );
61
+ XFS_CHECK_STRUCT_SIZE (xfs_bmdr_key_t , 8 );
57
62
58
63
/* dir/attr trees */
59
64
XFS_CHECK_STRUCT_SIZE (struct xfs_attr3_leaf_hdr , 80 );
@@ -68,62 +73,76 @@ xfs_check_ondisk_structs(void)
68
73
XFS_CHECK_STRUCT_SIZE (struct xfs_dir3_free_hdr , 64 );
69
74
XFS_CHECK_STRUCT_SIZE (struct xfs_dir3_leaf , 64 );
70
75
XFS_CHECK_STRUCT_SIZE (struct xfs_dir3_leaf_hdr , 64 );
71
- XFS_CHECK_STRUCT_SIZE (xfs_attr_leaf_entry_t , 8 );
72
- XFS_CHECK_STRUCT_SIZE (xfs_attr_leaf_hdr_t , 32 );
73
- XFS_CHECK_STRUCT_SIZE (xfs_attr_leaf_map_t , 4 );
74
- XFS_CHECK_STRUCT_SIZE (xfs_attr_leaf_name_local_t , 4 );
76
+ XFS_CHECK_STRUCT_SIZE (struct xfs_attr_leaf_entry , 8 );
77
+ XFS_CHECK_STRUCT_SIZE (struct xfs_attr_leaf_hdr , 32 );
78
+ XFS_CHECK_STRUCT_SIZE (struct xfs_attr_leaf_map , 4 );
79
+ XFS_CHECK_STRUCT_SIZE (struct xfs_attr_leaf_name_local , 4 );
75
80
76
81
/* realtime structures */
82
+ XFS_CHECK_STRUCT_SIZE (struct xfs_rtsb , 56 );
77
83
XFS_CHECK_STRUCT_SIZE (union xfs_rtword_raw , 4 );
78
84
XFS_CHECK_STRUCT_SIZE (union xfs_suminfo_raw , 4 );
79
85
XFS_CHECK_STRUCT_SIZE (struct xfs_rtbuf_blkinfo , 48 );
80
86
81
87
/*
82
- * m68k has problems with xfs_attr_leaf_name_remote_t , but we pad it to
83
- * 4 bytes anyway so it's not obviously a problem. Hence for the moment
84
- * we don't check this structure. This can be re-instated when the attr
85
- * definitions are updated to use c99 VLA definitions.
88
+ * m68k has problems with struct xfs_attr_leaf_name_remote , but we pad
89
+ * it to 4 bytes anyway so it's not obviously a problem. Hence for the
90
+ * moment we don't check this structure. This can be re-instated when
91
+ * the attr definitions are updated to use c99 VLA definitions.
86
92
*
87
- XFS_CHECK_STRUCT_SIZE(xfs_attr_leaf_name_remote_t , 12);
93
+ XFS_CHECK_STRUCT_SIZE(struct xfs_attr_leaf_name_remote , 12);
88
94
*/
89
95
90
- XFS_CHECK_OFFSET (struct xfs_dsb , sb_crc , 224 );
91
- XFS_CHECK_OFFSET (xfs_attr_leaf_name_local_t , valuelen , 0 );
92
- XFS_CHECK_OFFSET (xfs_attr_leaf_name_local_t , namelen , 2 );
93
- XFS_CHECK_OFFSET (xfs_attr_leaf_name_local_t , nameval , 3 );
94
- XFS_CHECK_OFFSET (xfs_attr_leaf_name_remote_t , valueblk , 0 );
95
- XFS_CHECK_OFFSET (xfs_attr_leaf_name_remote_t , valuelen , 4 );
96
- XFS_CHECK_OFFSET (xfs_attr_leaf_name_remote_t , namelen , 8 );
97
- XFS_CHECK_OFFSET (xfs_attr_leaf_name_remote_t , name , 9 );
98
- XFS_CHECK_STRUCT_SIZE (xfs_attr_leafblock_t , 32 );
96
+ XFS_CHECK_OFFSET (struct xfs_attr_leaf_name_local , valuelen , 0 );
97
+ XFS_CHECK_OFFSET (struct xfs_attr_leaf_name_local , namelen , 2 );
98
+ XFS_CHECK_OFFSET (struct xfs_attr_leaf_name_local , nameval , 3 );
99
+ XFS_CHECK_OFFSET (struct xfs_attr_leaf_name_remote , valueblk , 0 );
100
+ XFS_CHECK_OFFSET (struct xfs_attr_leaf_name_remote , valuelen , 4 );
101
+ XFS_CHECK_OFFSET (struct xfs_attr_leaf_name_remote , namelen , 8 );
102
+ XFS_CHECK_OFFSET (struct xfs_attr_leaf_name_remote , name , 9 );
103
+ XFS_CHECK_STRUCT_SIZE (struct xfs_attr_leafblock , 32 );
99
104
XFS_CHECK_STRUCT_SIZE (struct xfs_attr_sf_hdr , 4 );
100
105
XFS_CHECK_OFFSET (struct xfs_attr_sf_hdr , totsize , 0 );
101
106
XFS_CHECK_OFFSET (struct xfs_attr_sf_hdr , count , 2 );
102
107
XFS_CHECK_OFFSET (struct xfs_attr_sf_entry , namelen , 0 );
103
108
XFS_CHECK_OFFSET (struct xfs_attr_sf_entry , valuelen , 1 );
104
109
XFS_CHECK_OFFSET (struct xfs_attr_sf_entry , flags , 2 );
105
110
XFS_CHECK_OFFSET (struct xfs_attr_sf_entry , nameval , 3 );
106
- XFS_CHECK_STRUCT_SIZE (xfs_da_blkinfo_t , 12 );
107
- XFS_CHECK_STRUCT_SIZE (xfs_da_intnode_t , 16 );
108
- XFS_CHECK_STRUCT_SIZE (xfs_da_node_entry_t , 8 );
109
- XFS_CHECK_STRUCT_SIZE (xfs_da_node_hdr_t , 16 );
110
- XFS_CHECK_STRUCT_SIZE (xfs_dir2_data_free_t , 4 );
111
- XFS_CHECK_STRUCT_SIZE (xfs_dir2_data_hdr_t , 16 );
112
- XFS_CHECK_OFFSET (xfs_dir2_data_unused_t , freetag , 0 );
113
- XFS_CHECK_OFFSET (xfs_dir2_data_unused_t , length , 2 );
114
- XFS_CHECK_STRUCT_SIZE (xfs_dir2_free_hdr_t , 16 );
115
- XFS_CHECK_STRUCT_SIZE (xfs_dir2_free_t , 16 );
116
- XFS_CHECK_STRUCT_SIZE (xfs_dir2_leaf_entry_t , 8 );
117
- XFS_CHECK_STRUCT_SIZE (xfs_dir2_leaf_hdr_t , 16 );
118
- XFS_CHECK_STRUCT_SIZE (xfs_dir2_leaf_t , 16 );
119
- XFS_CHECK_STRUCT_SIZE (xfs_dir2_leaf_tail_t , 4 );
120
- XFS_CHECK_STRUCT_SIZE (xfs_dir2_sf_entry_t , 3 );
121
- XFS_CHECK_OFFSET (xfs_dir2_sf_entry_t , namelen , 0 );
122
- XFS_CHECK_OFFSET (xfs_dir2_sf_entry_t , offset , 1 );
123
- XFS_CHECK_OFFSET (xfs_dir2_sf_entry_t , name , 3 );
124
- XFS_CHECK_STRUCT_SIZE (xfs_dir2_sf_hdr_t , 10 );
111
+ XFS_CHECK_STRUCT_SIZE (struct xfs_da_blkinfo , 12 );
112
+ XFS_CHECK_STRUCT_SIZE (struct xfs_da_intnode , 16 );
113
+ XFS_CHECK_STRUCT_SIZE (struct xfs_da_node_entry , 8 );
114
+ XFS_CHECK_STRUCT_SIZE (struct xfs_da_node_hdr , 16 );
115
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_data_free , 4 );
116
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_data_hdr , 16 );
117
+ XFS_CHECK_OFFSET (struct xfs_dir2_data_unused , freetag , 0 );
118
+ XFS_CHECK_OFFSET (struct xfs_dir2_data_unused , length , 2 );
119
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_free_hdr , 16 );
120
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_free , 16 );
121
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_leaf_entry , 8 );
122
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_leaf_hdr , 16 );
123
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_leaf , 16 );
124
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_leaf_tail , 4 );
125
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_sf_entry , 3 );
126
+ XFS_CHECK_OFFSET (struct xfs_dir2_sf_entry , namelen , 0 );
127
+ XFS_CHECK_OFFSET (struct xfs_dir2_sf_entry , offset , 1 );
128
+ XFS_CHECK_OFFSET (struct xfs_dir2_sf_entry , name , 3 );
129
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_sf_hdr , 10 );
125
130
XFS_CHECK_STRUCT_SIZE (struct xfs_parent_rec , 12 );
126
131
132
+ /* ondisk dir/attr structures from xfs/122 */
133
+ XFS_CHECK_STRUCT_SIZE (struct xfs_attr_sf_entry , 3 );
134
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_data_free , 4 );
135
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_data_hdr , 16 );
136
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_data_unused , 6 );
137
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_free , 16 );
138
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_free_hdr , 16 );
139
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_leaf , 16 );
140
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_leaf_entry , 8 );
141
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_leaf_hdr , 16 );
142
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_leaf_tail , 4 );
143
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_sf_entry , 3 );
144
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_sf_hdr , 10 );
145
+
127
146
/* log structures */
128
147
XFS_CHECK_STRUCT_SIZE (struct xfs_buf_log_format , 88 );
129
148
XFS_CHECK_STRUCT_SIZE (struct xfs_dq_logformat , 24 );
@@ -159,6 +178,11 @@ xfs_check_ondisk_structs(void)
159
178
XFS_CHECK_OFFSET (struct xfs_efi_log_format_32 , efi_extents , 16 );
160
179
XFS_CHECK_OFFSET (struct xfs_efi_log_format_64 , efi_extents , 16 );
161
180
181
+ /* ondisk log structures from xfs/122 */
182
+ XFS_CHECK_STRUCT_SIZE (struct xfs_unmount_log_format , 8 );
183
+ XFS_CHECK_STRUCT_SIZE (struct xfs_xmd_log_format , 16 );
184
+ XFS_CHECK_STRUCT_SIZE (struct xfs_xmi_log_format , 88 );
185
+
162
186
/* parent pointer ioctls */
163
187
XFS_CHECK_STRUCT_SIZE (struct xfs_getparents_rec , 32 );
164
188
XFS_CHECK_STRUCT_SIZE (struct xfs_getparents , 40 );
@@ -203,6 +227,70 @@ xfs_check_ondisk_structs(void)
203
227
XFS_CHECK_VALUE (XFS_DQ_BIGTIME_EXPIRY_MIN << XFS_DQ_BIGTIME_SHIFT , 4 );
204
228
XFS_CHECK_VALUE (XFS_DQ_BIGTIME_EXPIRY_MAX << XFS_DQ_BIGTIME_SHIFT ,
205
229
16299260424LL );
230
+
231
+ /* superblock field checks we got from xfs/122 */
232
+ XFS_CHECK_STRUCT_SIZE (struct xfs_dsb , 288 );
233
+ XFS_CHECK_STRUCT_SIZE (struct xfs_sb , 288 );
234
+ XFS_CHECK_SB_OFFSET (sb_magicnum , 0 );
235
+ XFS_CHECK_SB_OFFSET (sb_blocksize , 4 );
236
+ XFS_CHECK_SB_OFFSET (sb_dblocks , 8 );
237
+ XFS_CHECK_SB_OFFSET (sb_rblocks , 16 );
238
+ XFS_CHECK_SB_OFFSET (sb_rextents , 24 );
239
+ XFS_CHECK_SB_OFFSET (sb_uuid , 32 );
240
+ XFS_CHECK_SB_OFFSET (sb_logstart , 48 );
241
+ XFS_CHECK_SB_OFFSET (sb_rootino , 56 );
242
+ XFS_CHECK_SB_OFFSET (sb_rbmino , 64 );
243
+ XFS_CHECK_SB_OFFSET (sb_rsumino , 72 );
244
+ XFS_CHECK_SB_OFFSET (sb_rextsize , 80 );
245
+ XFS_CHECK_SB_OFFSET (sb_agblocks , 84 );
246
+ XFS_CHECK_SB_OFFSET (sb_agcount , 88 );
247
+ XFS_CHECK_SB_OFFSET (sb_rbmblocks , 92 );
248
+ XFS_CHECK_SB_OFFSET (sb_logblocks , 96 );
249
+ XFS_CHECK_SB_OFFSET (sb_versionnum , 100 );
250
+ XFS_CHECK_SB_OFFSET (sb_sectsize , 102 );
251
+ XFS_CHECK_SB_OFFSET (sb_inodesize , 104 );
252
+ XFS_CHECK_SB_OFFSET (sb_inopblock , 106 );
253
+ XFS_CHECK_SB_OFFSET (sb_blocklog , 120 );
254
+ XFS_CHECK_SB_OFFSET (sb_fname [12 ], 120 );
255
+ XFS_CHECK_SB_OFFSET (sb_sectlog , 121 );
256
+ XFS_CHECK_SB_OFFSET (sb_inodelog , 122 );
257
+ XFS_CHECK_SB_OFFSET (sb_inopblog , 123 );
258
+ XFS_CHECK_SB_OFFSET (sb_agblklog , 124 );
259
+ XFS_CHECK_SB_OFFSET (sb_rextslog , 125 );
260
+ XFS_CHECK_SB_OFFSET (sb_inprogress , 126 );
261
+ XFS_CHECK_SB_OFFSET (sb_imax_pct , 127 );
262
+ XFS_CHECK_SB_OFFSET (sb_icount , 128 );
263
+ XFS_CHECK_SB_OFFSET (sb_ifree , 136 );
264
+ XFS_CHECK_SB_OFFSET (sb_fdblocks , 144 );
265
+ XFS_CHECK_SB_OFFSET (sb_frextents , 152 );
266
+ XFS_CHECK_SB_OFFSET (sb_uquotino , 160 );
267
+ XFS_CHECK_SB_OFFSET (sb_gquotino , 168 );
268
+ XFS_CHECK_SB_OFFSET (sb_qflags , 176 );
269
+ XFS_CHECK_SB_OFFSET (sb_flags , 178 );
270
+ XFS_CHECK_SB_OFFSET (sb_shared_vn , 179 );
271
+ XFS_CHECK_SB_OFFSET (sb_inoalignmt , 180 );
272
+ XFS_CHECK_SB_OFFSET (sb_unit , 184 );
273
+ XFS_CHECK_SB_OFFSET (sb_width , 188 );
274
+ XFS_CHECK_SB_OFFSET (sb_dirblklog , 192 );
275
+ XFS_CHECK_SB_OFFSET (sb_logsectlog , 193 );
276
+ XFS_CHECK_SB_OFFSET (sb_logsectsize , 194 );
277
+ XFS_CHECK_SB_OFFSET (sb_logsunit , 196 );
278
+ XFS_CHECK_SB_OFFSET (sb_features2 , 200 );
279
+ XFS_CHECK_SB_OFFSET (sb_bad_features2 , 204 );
280
+ XFS_CHECK_SB_OFFSET (sb_features_compat , 208 );
281
+ XFS_CHECK_SB_OFFSET (sb_features_ro_compat , 212 );
282
+ XFS_CHECK_SB_OFFSET (sb_features_incompat , 216 );
283
+ XFS_CHECK_SB_OFFSET (sb_features_log_incompat , 220 );
284
+ XFS_CHECK_SB_OFFSET (sb_crc , 224 );
285
+ XFS_CHECK_SB_OFFSET (sb_spino_align , 228 );
286
+ XFS_CHECK_SB_OFFSET (sb_pquotino , 232 );
287
+ XFS_CHECK_SB_OFFSET (sb_lsn , 240 );
288
+ XFS_CHECK_SB_OFFSET (sb_meta_uuid , 248 );
289
+ XFS_CHECK_SB_OFFSET (sb_metadirino , 264 );
290
+ XFS_CHECK_SB_OFFSET (sb_rgcount , 272 );
291
+ XFS_CHECK_SB_OFFSET (sb_rgextents , 276 );
292
+ XFS_CHECK_SB_OFFSET (sb_rgblklog , 280 );
293
+ XFS_CHECK_SB_OFFSET (sb_pad , 281 );
206
294
}
207
295
208
296
#endif /* __XFS_ONDISK_H */
0 commit comments