struct xfs_agf { __be32 agf_magicnum; /* 0 4 */ __be32 agf_versionnum; /* 4 4 */ __be32 agf_seqno; /* 8 4 */ __be32 agf_length; /* 12 4 */ __be32 agf_roots[2]; /* 16 8 */ __be32 agf_spare0; /* 24 4 */ __be32 agf_levels[2]; /* 28 8 */ __be32 agf_spare1; /* 36 4 */ __be32 agf_flfirst; /* 40 4 */ __be32 agf_fllast; /* 44 4 */ __be32 agf_flcount; /* 48 4 */ __be32 agf_freeblks; /* 52 4 */ __be32 agf_longest; /* 56 4 */ __be32 agf_btreeblks; /* 60 4 */ /* --- cacheline 1 boundary (64 bytes) --- */ /* size: 64, cachelines: 1 */ }; struct xfs_agi { __be32 agi_magicnum; /* 0 4 */ __be32 agi_versionnum; /* 4 4 */ __be32 agi_seqno; /* 8 4 */ __be32 agi_length; /* 12 4 */ __be32 agi_count; /* 16 4 */ __be32 agi_root; /* 20 4 */ __be32 agi_level; /* 24 4 */ __be32 agi_freecount; /* 28 4 */ __be32 agi_newino; /* 32 4 */ __be32 agi_dirino; /* 36 4 */ __be32 agi_unlinked[64]; /* 40 256 */ /* --- cacheline 4 boundary (256 bytes) was 40 bytes ago --- */ /* size: 296, cachelines: 5 */ /* last cacheline: 40 bytes */ }; struct xfs_agfl { __be32 agfl_bno[1]; /* 0 4 */ /* size: 4, cachelines: 1 */ /* last cacheline: 4 bytes */ }; struct xfs_alloc_rec { __be32 ar_startblock; /* 0 4 */ __be32 ar_blockcount; /* 4 4 */ /* size: 8, cachelines: 1 */ /* last cacheline: 8 bytes */ }; struct xfs_attr_leaf_map { __be16 base; /* 0 2 */ __be16 size; /* 2 2 */ /* size: 4, cachelines: 1 */ /* last cacheline: 4 bytes */ }; struct xfs_attr_leaf_hdr { xfs_da_blkinfo_t info; /* 0 12 */ __be16 count; /* 12 2 */ __be16 usedbytes; /* 14 2 */ __be16 firstused; /* 16 2 */ __u8 holes; /* 18 1 */ __u8 pad1; /* 19 1 */ xfs_attr_leaf_map_t freemap[3]; /* 20 12 */ /* size: 32, cachelines: 1 */ /* last cacheline: 32 bytes */ }; struct xfs_attr_leaf_entry { __be32 hashval; /* 0 4 */ __be16 nameidx; /* 4 2 */ __u8 flags; /* 6 1 */ __u8 pad2; /* 7 1 */ /* size: 8, cachelines: 1 */ /* last cacheline: 8 bytes */ }; struct xfs_attr_leaf_name_local { __be16 valuelen; /* 0 2 */ __u8 namelen; /* 2 1 */ __u8 nameval[1]; /* 3 1 */ /* size: 4, cachelines: 1 */ /* last cacheline: 4 bytes */ }; struct xfs_attr_leaf_name_remote { __be32 valueblk; /* 0 4 */ __be32 valuelen; /* 4 4 */ __u8 namelen; /* 8 1 */ __u8 name[1]; /* 9 1 */ /* size: 12, cachelines: 1 */ /* padding: 2 */ /* last cacheline: 12 bytes */ }; struct xfs_attr_shortform { struct xfs_attr_sf_hdr hdr; /* 0 4 */ /* XXX last struct has 1 byte of padding */ struct xfs_attr_sf_entry list[1]; /* 4 4 */ /* size: 8, cachelines: 1 */ /* paddings: 1, sum paddings: 1 */ /* last cacheline: 8 bytes */ }; struct xfs_attr_sf_hdr { __be16 totsize; /* 0 2 */ __u8 count; /* 2 1 */ /* size: 4, cachelines: 1 */ /* padding: 1 */ /* last cacheline: 4 bytes */ }; struct xfs_attr_sf_entry { __uint8_t namelen; /* 0 1 */ __uint8_t valuelen; /* 1 1 */ __uint8_t flags; /* 2 1 */ __uint8_t nameval[1]; /* 3 1 */ /* size: 4, cachelines: 1 */ /* last cacheline: 4 bytes */ }; struct xfs_bmdr_block { __be16 bb_level; /* 0 2 */ __be16 bb_numrecs; /* 2 2 */ /* size: 4, cachelines: 1 */ /* last cacheline: 4 bytes */ }; struct xfs_bmbt_rec_64 { __be64 l0; /* 0 8 */ __be64 l1; /* 8 8 */ /* size: 16, cachelines: 1 */ /* last cacheline: 16 bytes */ }; struct xfs_bmbt_key { __be64 br_startoff; /* 0 8 */ /* size: 8, cachelines: 1 */ /* last cacheline: 8 bytes */ }; struct xfs_btree_sblock { __be32 bb_magic; /* 0 4 */ __be16 bb_level; /* 4 2 */ __be16 bb_numrecs; /* 6 2 */ __be32 bb_leftsib; /* 8 4 */ __be32 bb_rightsib; /* 12 4 */ /* size: 16, cachelines: 1 */ /* last cacheline: 16 bytes */ }; struct xfs_btree_lblock { __be32 bb_magic; /* 0 4 */ __be16 bb_level; /* 4 2 */ __be16 bb_numrecs; /* 6 2 */ __be64 bb_leftsib; /* 8 8 */ __be64 bb_rightsib; /* 16 8 */ /* size: 24, cachelines: 1 */ /* last cacheline: 24 bytes */ }; struct xfs_btree_hdr { __be32 bb_magic; /* 0 4 */ __be16 bb_level; /* 4 2 */ __be16 bb_numrecs; /* 6 2 */ /* size: 8, cachelines: 1 */ /* last cacheline: 8 bytes */ }; struct xfs_btree_block { xfs_btree_hdr_t bb_h; /* 0 8 */ union { struct { __be32 bb_leftsib; /* 8 4 */ __be32 bb_rightsib; /* 12 4 */ } s; /* 8 */ struct { __be64 bb_leftsib; /* 8 8 */ __be64 bb_rightsib; /* 16 8 */ } l; /* 16 */ } bb_u; /* 8 16 */ /* size: 24, cachelines: 1 */ /* last cacheline: 24 bytes */ }; struct xfs_da_blkinfo { __be32 forw; /* 0 4 */ __be32 back; /* 4 4 */ __be16 magic; /* 8 2 */ __be16 pad; /* 10 2 */ /* size: 12, cachelines: 1 */ /* last cacheline: 12 bytes */ }; struct xfs_da_intnode { struct xfs_da_node_hdr hdr; /* 0 16 */ struct xfs_da_node_entry btree[1]; /* 16 8 */ /* size: 24, cachelines: 1 */ /* last cacheline: 24 bytes */ }; struct xfs_da_node_hdr { xfs_da_blkinfo_t info; /* 0 12 */ __be16 count; /* 12 2 */ __be16 level; /* 14 2 */ /* size: 16, cachelines: 1 */ /* last cacheline: 16 bytes */ }; struct xfs_da_node_entry { __be32 hashval; /* 0 4 */ __be32 before; /* 4 4 */ /* size: 8, cachelines: 1 */ /* last cacheline: 8 bytes */ }; struct xfs_timestamp { __be32 t_sec; /* 0 4 */ __be32 t_nsec; /* 4 4 */ /* size: 8, cachelines: 1 */ /* last cacheline: 8 bytes */ }; struct xfs_dinode_core { __be16 di_magic; /* 0 2 */ __be16 di_mode; /* 2 2 */ __u8 di_version; /* 4 1 */ __u8 di_format; /* 5 1 */ __be16 di_onlink; /* 6 2 */ __be32 di_uid; /* 8 4 */ __be32 di_gid; /* 12 4 */ __be32 di_nlink; /* 16 4 */ __be16 di_projid; /* 20 2 */ __u8 di_pad[8]; /* 22 8 */ __be16 di_flushiter; /* 30 2 */ xfs_timestamp_t di_atime; /* 32 8 */ xfs_timestamp_t di_mtime; /* 40 8 */ xfs_timestamp_t di_ctime; /* 48 8 */ __be64 di_size; /* 56 8 */ /* --- cacheline 1 boundary (64 bytes) --- */ __be64 di_nblocks; /* 64 8 */ __be32 di_extsize; /* 72 4 */ __be32 di_nextents; /* 76 4 */ __be16 di_anextents; /* 80 2 */ __u8 di_forkoff; /* 82 1 */ __s8 di_aformat; /* 83 1 */ __be32 di_dmevmask; /* 84 4 */ __be16 di_dmstate; /* 88 2 */ __be16 di_flags; /* 90 2 */ __be32 di_gen; /* 92 4 */ /* size: 96, cachelines: 2 */ /* last cacheline: 32 bytes */ }; struct xfs_dir2_block_tail { __be32 count; /* 0 4 */ __be32 stale; /* 4 4 */ /* size: 8, cachelines: 1 */ /* last cacheline: 8 bytes */ }; struct xfs_dir2_data_free { __be16 offset; /* 0 2 */ __be16 length; /* 2 2 */ /* size: 4, cachelines: 1 */ /* last cacheline: 4 bytes */ }; struct xfs_dir2_data_hdr { __be32 magic; /* 0 4 */ xfs_dir2_data_free_t bestfree[3]; /* 4 12 */ /* size: 16, cachelines: 1 */ /* last cacheline: 16 bytes */ }; struct xfs_dir2_data_entry { __be64 inumber; /* 0 8 */ __u8 namelen; /* 8 1 */ __u8 name[1]; /* 9 1 */ __be16 tag; /* 10 2 */ /* size: 12, cachelines: 1 */ /* last cacheline: 12 bytes */ }; struct xfs_dir2_data_unused { __be16 freetag; /* 0 2 */ __be16 length; /* 2 2 */ __be16 tag; /* 4 2 */ /* size: 8, cachelines: 1 */ /* padding: 2 */ /* last cacheline: 8 bytes */ }; struct xfs_dir2_leaf_hdr { xfs_da_blkinfo_t info; /* 0 12 */ __be16 count; /* 12 2 */ __be16 stale; /* 14 2 */ /* size: 16, cachelines: 1 */ /* last cacheline: 16 bytes */ }; struct xfs_dir2_leaf_entry { __be32 hashval; /* 0 4 */ __be32 address; /* 4 4 */ /* size: 8, cachelines: 1 */ /* last cacheline: 8 bytes */ }; struct xfs_dir2_leaf_tail { __be32 bestcount; /* 0 4 */ /* size: 4, cachelines: 1 */ /* last cacheline: 4 bytes */ }; struct xfs_dir2_free_hdr { __be32 magic; /* 0 4 */ __be32 firstdb; /* 4 4 */ __be32 nvalid; /* 8 4 */ __be32 nused; /* 12 4 */ /* size: 16, cachelines: 1 */ /* last cacheline: 16 bytes */ }; struct xfs_dir2_free { xfs_dir2_free_hdr_t hdr; /* 0 16 */ __be16 bests[1]; /* 16 2 */ /* size: 20, cachelines: 1 */ /* padding: 2 */ /* last cacheline: 20 bytes */ }; struct xfs_dir2_sf_hdr { __uint8_t count; /* 0 1 */ __uint8_t i8count; /* 1 1 */ /* XXX 2 bytes hole, try to pack */ xfs_dir2_inou_t parent; /* 4 8 */ /* size: 12, cachelines: 1 */ /* sum members: 10, holes: 1, sum holes: 2 */ /* last cacheline: 12 bytes */ }; struct xfs_dir2_sf_entry { __uint8_t namelen; /* 0 1 */ /* XXX 3 bytes hole, try to pack */ xfs_dir2_sf_off_t offset; /* 4 4 */ __uint8_t name[1]; /* 8 1 */ /* XXX 3 bytes hole, try to pack */ xfs_dir2_inou_t inumber; /* 12 8 */ /* size: 20, cachelines: 1 */ /* sum members: 14, holes: 2, sum holes: 6 */ /* last cacheline: 20 bytes */ }; struct xfs_dir2_sf { xfs_dir2_sf_hdr_t hdr; /* 0 12 */ xfs_dir2_sf_entry_t list[1]; /* 12 20 */ /* size: 32, cachelines: 1 */ /* last cacheline: 32 bytes */ }; struct xfs_inobt_rec { __be32 ir_startino; /* 0 4 */ __be32 ir_freecount; /* 4 4 */ __be64 ir_free; /* 8 8 */ /* size: 16, cachelines: 1 */ /* last cacheline: 16 bytes */ }; struct xfs_inobt_key { __be32 ir_startino; /* 0 4 */ /* size: 4, cachelines: 1 */ /* last cacheline: 4 bytes */ }; struct xfs_btree_sblock { __be32 bb_magic; /* 0 4 */ __be16 bb_level; /* 4 2 */ __be16 bb_numrecs; /* 6 2 */ __be32 bb_leftsib; /* 8 4 */ __be32 bb_rightsib; /* 12 4 */ /* size: 16, cachelines: 1 */ /* last cacheline: 16 bytes */ }; struct xlog_op_header { __be32 oh_tid; /* 0 4 */ __be32 oh_len; /* 4 4 */ __u8 oh_clientid; /* 8 1 */ __u8 oh_flags; /* 9 1 */ __u16 oh_res2; /* 10 2 */ /* size: 12, cachelines: 1 */ /* last cacheline: 12 bytes */ }; struct xlog_rec_header { __be32 h_magicno; /* 0 4 */ __be32 h_cycle; /* 4 4 */ __be32 h_version; /* 8 4 */ __be32 h_len; /* 12 4 */ __be64 h_lsn; /* 16 8 */ __be64 h_tail_lsn; /* 24 8 */ __be32 h_chksum; /* 32 4 */ __be32 h_prev_block; /* 36 4 */ __be32 h_num_logops; /* 40 4 */ __be32 h_cycle_data[64]; /* 44 256 */ /* --- cacheline 4 boundary (256 bytes) was 44 bytes ago --- */ __be32 h_fmt; /* 300 4 */ uuid_t h_fs_uuid; /* 304 16 */ /* --- cacheline 5 boundary (320 bytes) --- */ __be32 h_size; /* 320 4 */ /* size: 324, cachelines: 6 */ /* last cacheline: 4 bytes */ }; struct xlog_rec_ext_header { __be32 xh_cycle; /* 0 4 */ __be32 xh_cycle_data[64]; /* 4 256 */ /* --- cacheline 4 boundary (256 bytes) was 4 bytes ago --- */ /* size: 260, cachelines: 5 */ /* last cacheline: 4 bytes */ }; struct xfs_disk_dquot { __be16 d_magic; /* 0 2 */ __u8 d_version; /* 2 1 */ __u8 d_flags; /* 3 1 */ __be32 d_id; /* 4 4 */ __be64 d_blk_hardlimit; /* 8 8 */ __be64 d_blk_softlimit; /* 16 8 */ __be64 d_ino_hardlimit; /* 24 8 */ __be64 d_ino_softlimit; /* 32 8 */ __be64 d_bcount; /* 40 8 */ __be64 d_icount; /* 48 8 */ __be32 d_itimer; /* 56 4 */ __be32 d_btimer; /* 60 4 */ /* --- cacheline 1 boundary (64 bytes) --- */ __be16 d_iwarns; /* 64 2 */ __be16 d_bwarns; /* 66 2 */ __be32 d_pad0; /* 68 4 */ __be64 d_rtb_hardlimit; /* 72 8 */ __be64 d_rtb_softlimit; /* 80 8 */ __be64 d_rtbcount; /* 88 8 */ __be32 d_rtbtimer; /* 96 4 */ __be16 d_rtbwarns; /* 100 2 */ __be16 d_pad; /* 102 2 */ /* size: 104, cachelines: 2 */ /* last cacheline: 40 bytes */ }; struct xfs_dsb { __be32 sb_magicnum; /* 0 4 */ __be32 sb_blocksize; /* 4 4 */ __be64 sb_dblocks; /* 8 8 */ __be64 sb_rblocks; /* 16 8 */ __be64 sb_rextents; /* 24 8 */ uuid_t sb_uuid; /* 32 16 */ __be64 sb_logstart; /* 48 8 */ __be64 sb_rootino; /* 56 8 */ /* --- cacheline 1 boundary (64 bytes) --- */ __be64 sb_rbmino; /* 64 8 */ __be64 sb_rsumino; /* 72 8 */ __be32 sb_rextsize; /* 80 4 */ __be32 sb_agblocks; /* 84 4 */ __be32 sb_agcount; /* 88 4 */ __be32 sb_rbmblocks; /* 92 4 */ __be32 sb_logblocks; /* 96 4 */ __be16 sb_versionnum; /* 100 2 */ __be16 sb_sectsize; /* 102 2 */ __be16 sb_inodesize; /* 104 2 */ __be16 sb_inopblock; /* 106 2 */ char sb_fname[12]; /* 108 12 */ __u8 sb_blocklog; /* 120 1 */ __u8 sb_sectlog; /* 121 1 */ __u8 sb_inodelog; /* 122 1 */ __u8 sb_inopblog; /* 123 1 */ __u8 sb_agblklog; /* 124 1 */ __u8 sb_rextslog; /* 125 1 */ __u8 sb_inprogress; /* 126 1 */ __u8 sb_imax_pct; /* 127 1 */ /* --- cacheline 2 boundary (128 bytes) --- */ __be64 sb_icount; /* 128 8 */ __be64 sb_ifree; /* 136 8 */ __be64 sb_fdblocks; /* 144 8 */ __be64 sb_frextents; /* 152 8 */ __be64 sb_uquotino; /* 160 8 */ __be64 sb_gquotino; /* 168 8 */ __be16 sb_qflags; /* 176 2 */ __u8 sb_flags; /* 178 1 */ __u8 sb_shared_vn; /* 179 1 */ __be32 sb_inoalignmt; /* 180 4 */ __be32 sb_unit; /* 184 4 */ __be32 sb_width; /* 188 4 */ /* --- cacheline 3 boundary (192 bytes) --- */ __u8 sb_dirblklog; /* 192 1 */ __u8 sb_logsectlog; /* 193 1 */ __be16 sb_logsectsize; /* 194 2 */ __be32 sb_logsunit; /* 196 4 */ __be32 sb_features2; /* 200 4 */ /* size: 204, cachelines: 4 */ /* last cacheline: 12 bytes */ };