xfs_ondisk.h (30e05599219f3c15bd5f24190af0e33cdb4a00e5) xfs_ondisk.h (f93e5436f0ee5a85eaa3a86d2614d215873fb18b)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (c) 2016 Oracle.
4 * All Rights Reserved.
5 */
6#ifndef __XFS_ONDISK_H
7#define __XFS_ONDISK_H
8
9#define XFS_CHECK_STRUCT_SIZE(structname, size) \
10 BUILD_BUG_ON_MSG(sizeof(structname) != (size), "XFS: sizeof(" \
11 #structname ") is wrong, expected " #size)
12
13#define XFS_CHECK_OFFSET(structname, member, off) \
14 BUILD_BUG_ON_MSG(offsetof(structname, member) != (off), \
15 "XFS: offsetof(" #structname ", " #member ") is wrong, " \
16 "expected " #off)
17
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (c) 2016 Oracle.
4 * All Rights Reserved.
5 */
6#ifndef __XFS_ONDISK_H
7#define __XFS_ONDISK_H
8
9#define XFS_CHECK_STRUCT_SIZE(structname, size) \
10 BUILD_BUG_ON_MSG(sizeof(structname) != (size), "XFS: sizeof(" \
11 #structname ") is wrong, expected " #size)
12
13#define XFS_CHECK_OFFSET(structname, member, off) \
14 BUILD_BUG_ON_MSG(offsetof(structname, member) != (off), \
15 "XFS: offsetof(" #structname ", " #member ") is wrong, " \
16 "expected " #off)
17
18#define XFS_CHECK_VALUE(value, expected) \
19 BUILD_BUG_ON_MSG((value) != (expected), \
20 "XFS: value of " #value " is wrong, expected " #expected)
21
18static inline void __init
19xfs_check_ondisk_structs(void)
20{
21 /* ag/file structures */
22 XFS_CHECK_STRUCT_SIZE(struct xfs_acl, 4);
23 XFS_CHECK_STRUCT_SIZE(struct xfs_acl_entry, 12);
24 XFS_CHECK_STRUCT_SIZE(struct xfs_agf, 224);
25 XFS_CHECK_STRUCT_SIZE(struct xfs_agfl, 36);

--- 123 unchanged lines hidden (view full) ---

149 XFS_CHECK_OFFSET(struct xfs_dir3_data_hdr, hdr.magic, 0);
150 XFS_CHECK_OFFSET(struct xfs_dir3_free, hdr.hdr.magic, 0);
151 XFS_CHECK_OFFSET(struct xfs_attr3_leafblock, hdr.info.hdr, 0);
152
153 XFS_CHECK_STRUCT_SIZE(struct xfs_bulkstat, 192);
154 XFS_CHECK_STRUCT_SIZE(struct xfs_inumbers, 24);
155 XFS_CHECK_STRUCT_SIZE(struct xfs_bulkstat_req, 64);
156 XFS_CHECK_STRUCT_SIZE(struct xfs_inumbers_req, 64);
22static inline void __init
23xfs_check_ondisk_structs(void)
24{
25 /* ag/file structures */
26 XFS_CHECK_STRUCT_SIZE(struct xfs_acl, 4);
27 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);

--- 123 unchanged lines hidden (view full) ---

153 XFS_CHECK_OFFSET(struct xfs_dir3_data_hdr, hdr.magic, 0);
154 XFS_CHECK_OFFSET(struct xfs_dir3_free, hdr.hdr.magic, 0);
155 XFS_CHECK_OFFSET(struct xfs_attr3_leafblock, hdr.info.hdr, 0);
156
157 XFS_CHECK_STRUCT_SIZE(struct xfs_bulkstat, 192);
158 XFS_CHECK_STRUCT_SIZE(struct xfs_inumbers, 24);
159 XFS_CHECK_STRUCT_SIZE(struct xfs_bulkstat_req, 64);
160 XFS_CHECK_STRUCT_SIZE(struct xfs_inumbers_req, 64);
161
162 /*
163 * Make sure the incore inode timestamp range corresponds to hand
164 * converted values based on the ondisk format specification.
165 */
166 XFS_CHECK_VALUE(XFS_BIGTIME_TIME_MIN - XFS_BIGTIME_EPOCH_OFFSET,
167 XFS_LEGACY_TIME_MIN);
168 XFS_CHECK_VALUE(XFS_BIGTIME_TIME_MAX - XFS_BIGTIME_EPOCH_OFFSET,
169 16299260424LL);
157}
158
159#endif /* __XFS_ONDISK_H */
170}
171
172#endif /* __XFS_ONDISK_H */