^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) // SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright (c) 2016 Oracle.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) * All Rights Reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #ifndef __XFS_ONDISK_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #define __XFS_ONDISK_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #define XFS_CHECK_STRUCT_SIZE(structname, size) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) BUILD_BUG_ON_MSG(sizeof(structname) != (size), "XFS: sizeof(" \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #structname ") is wrong, expected " #size)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #define XFS_CHECK_OFFSET(structname, member, off) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) BUILD_BUG_ON_MSG(offsetof(structname, member) != (off), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) "XFS: offsetof(" #structname ", " #member ") is wrong, " \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) "expected " #off)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #define XFS_CHECK_VALUE(value, expected) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) BUILD_BUG_ON_MSG((value) != (expected), \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) "XFS: value of " #value " is wrong, expected " #expected)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) static inline void __init
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) xfs_check_ondisk_structs(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) /* ag/file structures */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) XFS_CHECK_STRUCT_SIZE(struct xfs_acl, 4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) XFS_CHECK_STRUCT_SIZE(struct xfs_acl_entry, 12);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) XFS_CHECK_STRUCT_SIZE(struct xfs_agf, 224);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) XFS_CHECK_STRUCT_SIZE(struct xfs_agfl, 36);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) XFS_CHECK_STRUCT_SIZE(struct xfs_agi, 344);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) XFS_CHECK_STRUCT_SIZE(struct xfs_bmbt_key, 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) XFS_CHECK_STRUCT_SIZE(struct xfs_bmbt_rec, 16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) XFS_CHECK_STRUCT_SIZE(struct xfs_bmdr_block, 4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) XFS_CHECK_STRUCT_SIZE(struct xfs_btree_block_shdr, 48);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) XFS_CHECK_STRUCT_SIZE(struct xfs_btree_block_lhdr, 64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) XFS_CHECK_STRUCT_SIZE(struct xfs_btree_block, 72);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) XFS_CHECK_STRUCT_SIZE(struct xfs_dinode, 176);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) XFS_CHECK_STRUCT_SIZE(struct xfs_disk_dquot, 104);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) XFS_CHECK_STRUCT_SIZE(struct xfs_dqblk, 136);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) XFS_CHECK_STRUCT_SIZE(struct xfs_dsb, 264);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) XFS_CHECK_STRUCT_SIZE(struct xfs_dsymlink_hdr, 56);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) XFS_CHECK_STRUCT_SIZE(struct xfs_inobt_key, 4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) XFS_CHECK_STRUCT_SIZE(struct xfs_inobt_rec, 16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) XFS_CHECK_STRUCT_SIZE(struct xfs_refcount_key, 4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) XFS_CHECK_STRUCT_SIZE(struct xfs_refcount_rec, 12);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) XFS_CHECK_STRUCT_SIZE(struct xfs_rmap_key, 20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) XFS_CHECK_STRUCT_SIZE(struct xfs_rmap_rec, 24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) XFS_CHECK_STRUCT_SIZE(xfs_timestamp_t, 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) XFS_CHECK_STRUCT_SIZE(struct xfs_legacy_timestamp, 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) XFS_CHECK_STRUCT_SIZE(xfs_alloc_key_t, 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) XFS_CHECK_STRUCT_SIZE(xfs_alloc_ptr_t, 4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) XFS_CHECK_STRUCT_SIZE(xfs_alloc_rec_t, 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) XFS_CHECK_STRUCT_SIZE(xfs_inobt_ptr_t, 4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) XFS_CHECK_STRUCT_SIZE(xfs_refcount_ptr_t, 4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) XFS_CHECK_STRUCT_SIZE(xfs_rmap_ptr_t, 4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) /* dir/attr trees */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) XFS_CHECK_STRUCT_SIZE(struct xfs_attr3_leaf_hdr, 80);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) XFS_CHECK_STRUCT_SIZE(struct xfs_attr3_leafblock, 88);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) XFS_CHECK_STRUCT_SIZE(struct xfs_attr3_rmt_hdr, 56);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) XFS_CHECK_STRUCT_SIZE(struct xfs_da3_blkinfo, 56);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) XFS_CHECK_STRUCT_SIZE(struct xfs_da3_intnode, 64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) XFS_CHECK_STRUCT_SIZE(struct xfs_da3_node_hdr, 64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) XFS_CHECK_STRUCT_SIZE(struct xfs_dir3_blk_hdr, 48);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) XFS_CHECK_STRUCT_SIZE(struct xfs_dir3_data_hdr, 64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) XFS_CHECK_STRUCT_SIZE(struct xfs_dir3_free, 64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) XFS_CHECK_STRUCT_SIZE(struct xfs_dir3_free_hdr, 64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) XFS_CHECK_STRUCT_SIZE(struct xfs_dir3_leaf, 64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) XFS_CHECK_STRUCT_SIZE(struct xfs_dir3_leaf_hdr, 64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) XFS_CHECK_STRUCT_SIZE(xfs_attr_leaf_entry_t, 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) XFS_CHECK_STRUCT_SIZE(xfs_attr_leaf_hdr_t, 32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) XFS_CHECK_STRUCT_SIZE(xfs_attr_leaf_map_t, 4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) XFS_CHECK_STRUCT_SIZE(xfs_attr_leaf_name_local_t, 4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) * m68k has problems with xfs_attr_leaf_name_remote_t, but we pad it to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) * 4 bytes anyway so it's not obviously a problem. Hence for the moment
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) * we don't check this structure. This can be re-instated when the attr
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) * definitions are updated to use c99 VLA definitions.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) XFS_CHECK_STRUCT_SIZE(xfs_attr_leaf_name_remote_t, 12);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) XFS_CHECK_OFFSET(xfs_attr_leaf_name_local_t, valuelen, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) XFS_CHECK_OFFSET(xfs_attr_leaf_name_local_t, namelen, 2);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) XFS_CHECK_OFFSET(xfs_attr_leaf_name_local_t, nameval, 3);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) XFS_CHECK_OFFSET(xfs_attr_leaf_name_remote_t, valueblk, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) XFS_CHECK_OFFSET(xfs_attr_leaf_name_remote_t, valuelen, 4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) XFS_CHECK_OFFSET(xfs_attr_leaf_name_remote_t, namelen, 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) XFS_CHECK_OFFSET(xfs_attr_leaf_name_remote_t, name, 9);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) XFS_CHECK_STRUCT_SIZE(xfs_attr_leafblock_t, 40);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) XFS_CHECK_OFFSET(struct xfs_attr_shortform, hdr.totsize, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) XFS_CHECK_OFFSET(struct xfs_attr_shortform, hdr.count, 2);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) XFS_CHECK_OFFSET(struct xfs_attr_shortform, list[0].namelen, 4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) XFS_CHECK_OFFSET(struct xfs_attr_shortform, list[0].valuelen, 5);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) XFS_CHECK_OFFSET(struct xfs_attr_shortform, list[0].flags, 6);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) XFS_CHECK_OFFSET(struct xfs_attr_shortform, list[0].nameval, 7);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) XFS_CHECK_STRUCT_SIZE(xfs_da_blkinfo_t, 12);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) XFS_CHECK_STRUCT_SIZE(xfs_da_intnode_t, 16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) XFS_CHECK_STRUCT_SIZE(xfs_da_node_entry_t, 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) XFS_CHECK_STRUCT_SIZE(xfs_da_node_hdr_t, 16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) XFS_CHECK_STRUCT_SIZE(xfs_dir2_data_free_t, 4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) XFS_CHECK_STRUCT_SIZE(xfs_dir2_data_hdr_t, 16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) XFS_CHECK_OFFSET(xfs_dir2_data_unused_t, freetag, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) XFS_CHECK_OFFSET(xfs_dir2_data_unused_t, length, 2);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) XFS_CHECK_STRUCT_SIZE(xfs_dir2_free_hdr_t, 16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) XFS_CHECK_STRUCT_SIZE(xfs_dir2_free_t, 16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) XFS_CHECK_STRUCT_SIZE(xfs_dir2_leaf_entry_t, 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) XFS_CHECK_STRUCT_SIZE(xfs_dir2_leaf_hdr_t, 16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) XFS_CHECK_STRUCT_SIZE(xfs_dir2_leaf_t, 16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) XFS_CHECK_STRUCT_SIZE(xfs_dir2_leaf_tail_t, 4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) XFS_CHECK_STRUCT_SIZE(xfs_dir2_sf_entry_t, 3);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) XFS_CHECK_OFFSET(xfs_dir2_sf_entry_t, namelen, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) XFS_CHECK_OFFSET(xfs_dir2_sf_entry_t, offset, 1);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) XFS_CHECK_OFFSET(xfs_dir2_sf_entry_t, name, 3);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) XFS_CHECK_STRUCT_SIZE(xfs_dir2_sf_hdr_t, 10);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) /* log structures */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) XFS_CHECK_STRUCT_SIZE(struct xfs_buf_log_format, 88);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) XFS_CHECK_STRUCT_SIZE(struct xfs_dq_logformat, 24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) XFS_CHECK_STRUCT_SIZE(struct xfs_efd_log_format_32, 28);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) XFS_CHECK_STRUCT_SIZE(struct xfs_efd_log_format_64, 32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) XFS_CHECK_STRUCT_SIZE(struct xfs_efi_log_format_32, 28);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) XFS_CHECK_STRUCT_SIZE(struct xfs_efi_log_format_64, 32);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) XFS_CHECK_STRUCT_SIZE(struct xfs_extent_32, 12);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) XFS_CHECK_STRUCT_SIZE(struct xfs_extent_64, 16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) XFS_CHECK_STRUCT_SIZE(struct xfs_log_dinode, 176);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) XFS_CHECK_STRUCT_SIZE(struct xfs_icreate_log, 28);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) XFS_CHECK_STRUCT_SIZE(xfs_ictimestamp_t, 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) XFS_CHECK_STRUCT_SIZE(struct xfs_legacy_ictimestamp, 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) XFS_CHECK_STRUCT_SIZE(struct xfs_inode_log_format_32, 52);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) XFS_CHECK_STRUCT_SIZE(struct xfs_inode_log_format, 56);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) XFS_CHECK_STRUCT_SIZE(struct xfs_qoff_logformat, 20);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) XFS_CHECK_STRUCT_SIZE(struct xfs_trans_header, 16);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) * The v5 superblock format extended several v4 header structures with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) * additional data. While new fields are only accessible on v5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) * superblocks, it's important that the v5 structures place original v4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) * fields/headers in the correct location on-disk. For example, we must
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) * be able to find magic values at the same location in certain blocks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) * regardless of superblock version.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) * The following checks ensure that various v5 data structures place the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) * subset of v4 metadata associated with the same type of block at the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) * start of the on-disk block. If there is no data structure definition
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) * for certain types of v4 blocks, traverse down to the first field of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) * common metadata (e.g., magic value) and make sure it is at offset
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) * zero.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) XFS_CHECK_OFFSET(struct xfs_dir3_leaf, hdr.info.hdr, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) XFS_CHECK_OFFSET(struct xfs_da3_intnode, hdr.info.hdr, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) XFS_CHECK_OFFSET(struct xfs_dir3_data_hdr, hdr.magic, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) XFS_CHECK_OFFSET(struct xfs_dir3_free, hdr.hdr.magic, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) XFS_CHECK_OFFSET(struct xfs_attr3_leafblock, hdr.info.hdr, 0);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) XFS_CHECK_STRUCT_SIZE(struct xfs_bulkstat, 192);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) XFS_CHECK_STRUCT_SIZE(struct xfs_inumbers, 24);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) XFS_CHECK_STRUCT_SIZE(struct xfs_bulkstat_req, 64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) XFS_CHECK_STRUCT_SIZE(struct xfs_inumbers_req, 64);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) * Make sure the incore inode timestamp range corresponds to hand
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) * converted values based on the ondisk format specification.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) XFS_CHECK_VALUE(XFS_BIGTIME_TIME_MIN - XFS_BIGTIME_EPOCH_OFFSET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) XFS_LEGACY_TIME_MIN);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) XFS_CHECK_VALUE(XFS_BIGTIME_TIME_MAX - XFS_BIGTIME_EPOCH_OFFSET,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 16299260424LL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) /* Do the same with the incore quota expiration range. */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) XFS_CHECK_VALUE(XFS_DQ_BIGTIME_EXPIRY_MIN << XFS_DQ_BIGTIME_SHIFT, 4);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) XFS_CHECK_VALUE(XFS_DQ_BIGTIME_EXPIRY_MAX << XFS_DQ_BIGTIME_SHIFT,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) 16299260424LL);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) #endif /* __XFS_ONDISK_H */