1919 static_assert((value) == (expected), \
2020 "XFS: value of " #value " is wrong, expected " #expected)
2121
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+
2226static inline void __init
2327xfs_check_ondisk_structs (void )
2428{
@@ -31,7 +35,6 @@ xfs_check_ondisk_structs(void)
3135 XFS_CHECK_STRUCT_SIZE (struct xfs_dinode , 176 );
3236 XFS_CHECK_STRUCT_SIZE (struct xfs_disk_dquot , 104 );
3337 XFS_CHECK_STRUCT_SIZE (struct xfs_dqblk , 136 );
34- XFS_CHECK_STRUCT_SIZE (struct xfs_dsb , 288 );
3538 XFS_CHECK_STRUCT_SIZE (struct xfs_dsymlink_hdr , 56 );
3639 XFS_CHECK_STRUCT_SIZE (xfs_timestamp_t , 8 );
3740 XFS_CHECK_STRUCT_SIZE (struct xfs_legacy_timestamp , 8 );
@@ -55,6 +58,7 @@ xfs_check_ondisk_structs(void)
5558 XFS_CHECK_STRUCT_SIZE (xfs_inobt_ptr_t , 4 );
5659 XFS_CHECK_STRUCT_SIZE (xfs_refcount_ptr_t , 4 );
5760 XFS_CHECK_STRUCT_SIZE (xfs_rmap_ptr_t , 4 );
61+ XFS_CHECK_STRUCT_SIZE (xfs_bmdr_key_t , 8 );
5862
5963 /* dir/attr trees */
6064 XFS_CHECK_STRUCT_SIZE (struct xfs_attr3_leaf_hdr , 80 );
@@ -89,7 +93,6 @@ xfs_check_ondisk_structs(void)
8993 XFS_CHECK_STRUCT_SIZE(struct xfs_attr_leaf_name_remote, 12);
9094 */
9195
92- XFS_CHECK_OFFSET (struct xfs_dsb , sb_crc , 224 );
9396 XFS_CHECK_OFFSET (struct xfs_attr_leaf_name_local , valuelen , 0 );
9497 XFS_CHECK_OFFSET (struct xfs_attr_leaf_name_local , namelen , 2 );
9598 XFS_CHECK_OFFSET (struct xfs_attr_leaf_name_local , nameval , 3 );
@@ -126,6 +129,20 @@ xfs_check_ondisk_structs(void)
126129 XFS_CHECK_STRUCT_SIZE (struct xfs_dir2_sf_hdr , 10 );
127130 XFS_CHECK_STRUCT_SIZE (struct xfs_parent_rec , 12 );
128131
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+
129146 /* log structures */
130147 XFS_CHECK_STRUCT_SIZE (struct xfs_buf_log_format , 88 );
131148 XFS_CHECK_STRUCT_SIZE (struct xfs_dq_logformat , 24 );
@@ -161,6 +178,11 @@ xfs_check_ondisk_structs(void)
161178 XFS_CHECK_OFFSET (struct xfs_efi_log_format_32 , efi_extents , 16 );
162179 XFS_CHECK_OFFSET (struct xfs_efi_log_format_64 , efi_extents , 16 );
163180
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+
164186 /* parent pointer ioctls */
165187 XFS_CHECK_STRUCT_SIZE (struct xfs_getparents_rec , 32 );
166188 XFS_CHECK_STRUCT_SIZE (struct xfs_getparents , 40 );
@@ -205,6 +227,70 @@ xfs_check_ondisk_structs(void)
205227 XFS_CHECK_VALUE (XFS_DQ_BIGTIME_EXPIRY_MIN << XFS_DQ_BIGTIME_SHIFT , 4 );
206228 XFS_CHECK_VALUE (XFS_DQ_BIGTIME_EXPIRY_MAX << XFS_DQ_BIGTIME_SHIFT ,
207229 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 );
208294}
209295
210296#endif /* __XFS_ONDISK_H */
0 commit comments