mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
An attempt at looking at the sizes of xfs structures with exclusions
for ones that we know are different. The aim is to help pick up on extensions to structures and addition of structures which for instance may vary on 32 bit and 64 bit word size versions. Merge of master-melb:xfs-cmds:26056a by kenmcd. An attempt at looking at the sizes of xfs structures with exclusions for ones that we know are different. The aim is to help pick up on extensions to structures and addition of structures which for instance may vary on 32 bit and 64 bit word size versions.
This commit is contained in:
@@ -0,0 +1,148 @@
|
||||
#! /bin/sh
|
||||
# FS QA Test No. 122
|
||||
#
|
||||
# pv#952498
|
||||
# Keep an eye on some of the xfs type sizes
|
||||
# Motivation from differing ondisk types for 32 and 64 bit word versions.
|
||||
#
|
||||
#-----------------------------------------------------------------------
|
||||
# Copyright (c) 2006 Silicon Graphics, Inc. All Rights Reserved.
|
||||
#-----------------------------------------------------------------------
|
||||
#
|
||||
# creator
|
||||
owner=tes@sgi.com
|
||||
|
||||
seq=`basename $0`
|
||||
echo "QA output created by $seq"
|
||||
|
||||
here=`pwd`
|
||||
tmp=/tmp/$$
|
||||
status=1 # failure is the default!
|
||||
trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
|
||||
|
||||
# get standard environment
|
||||
. ./common.rc
|
||||
|
||||
# real QA test starts here
|
||||
_supported_fs xfs
|
||||
_supported_os Linux
|
||||
|
||||
cprog=$tmp.get_structs.c
|
||||
oprog=$tmp.get_structs
|
||||
|
||||
cat >$cprog <<EOF
|
||||
#include <stdio.h>
|
||||
#include <xfs/libxlog.h>
|
||||
EOF
|
||||
|
||||
cat >$tmp.ignore <<EOF
|
||||
xfs_buf_cancel_t
|
||||
xfs_swapext_t
|
||||
xfs_dirops_t
|
||||
xfs_efi_log_item_t
|
||||
xfs_efd_log_item_t
|
||||
xfs_iocore_t
|
||||
xfs_ihash_t
|
||||
xfs_chashlist_t
|
||||
xfs_chash_t
|
||||
xfs_iptr_t
|
||||
xfs_dmops_t
|
||||
xfs_qmops_t
|
||||
xfs_ioops_t
|
||||
xfs_mod_sb_t
|
||||
xfs_dqtrx_t
|
||||
xfs_dqtrxops_t
|
||||
xfs_ail_entry_t
|
||||
xfs_item_ops_t
|
||||
xfs_log_busy_slot_t
|
||||
xfs_log_busy_chunk_t
|
||||
xfs_inode_log_format_t
|
||||
xfs_efi_log_format_t
|
||||
xfs_efd_log_format_t
|
||||
xfs_perag_busy_t
|
||||
xfs_perag_t
|
||||
xfs_alloc_arg_t
|
||||
xfs_attr_list_context_t
|
||||
xfs_attr_sf_sort_t
|
||||
xfs_bmbt_irec_t
|
||||
xfs_bmap_free_item_t
|
||||
xfs_bmap_free_t
|
||||
xfs_bmalloca_t
|
||||
xfs_btree_cur_t
|
||||
xfs_buf_log_item_t
|
||||
xfs_da_args_t
|
||||
xfs_dabuf_t
|
||||
xfs_da_state_blk_t
|
||||
xfs_da_state_path_t
|
||||
xfs_da_state_t
|
||||
xfs_dinode_t
|
||||
xfs_dir2_block_t
|
||||
xfs_dir2_data_entry_t
|
||||
xfs_dir2_data_union_t
|
||||
xfs_dir2_data_t
|
||||
xfs_dir2_put_args_t
|
||||
xfs_dir_put_args_t
|
||||
xfs_dir_sf_sort_t
|
||||
xfs_extent_t
|
||||
xfs_flock64_t
|
||||
xfs_fsop_geom_v1_t
|
||||
xfs_growfs_data_t
|
||||
xfs_growfs_rt_t
|
||||
xfs_bstime_t
|
||||
xfs_bstat_t
|
||||
xfs_fsop_bulkreq_t
|
||||
xfs_inogrp_t
|
||||
xfs_fsop_handlereq_t
|
||||
xfs_fsop_setdm_handlereq_t
|
||||
xfs_fsop_attrlist_handlereq_t
|
||||
xfs_attr_multiop_t
|
||||
xfs_fsop_attrmulti_handlereq_t
|
||||
xfs_imap_t
|
||||
xfs_ifork_t
|
||||
xfs_inode_t
|
||||
xfs_inode_log_item_t
|
||||
xfs_log_iovec_t
|
||||
xfs_log_callback_t
|
||||
xfs_mount_t
|
||||
xfs_sb_t
|
||||
xfs_log_item_t
|
||||
xfs_log_item_desc_t
|
||||
xfs_log_item_chunk_t
|
||||
xfs_trans_t
|
||||
xfs_dirent_t
|
||||
xfs_fsop_getparents_handlereq_t
|
||||
EOF
|
||||
|
||||
echo 'int main(int argc, char *argv[]) {' >>$cprog
|
||||
|
||||
#
|
||||
# Printfs of typedef sizes
|
||||
#
|
||||
cat /usr/include/xfs/xfs*.h | indent |\
|
||||
sed -e 's/__attribute__ *[(][(]packed[)][)]//' |\
|
||||
tee shit |\
|
||||
egrep '} *xfs_.*_t' |\
|
||||
egrep -v -f $tmp.ignore |\
|
||||
awk '{sub(/[;,]/,"",$2); print "printf(\"sizeof(", $2, ") = %d\\n\", sizeof(", $2, "));"}' \
|
||||
>>$cprog
|
||||
|
||||
#
|
||||
# Look at offsets of key ones which differ in lengths
|
||||
#
|
||||
|
||||
# xfs_sb_t
|
||||
cat /usr/include/xfs/xfs*.h | indent |\
|
||||
awk '
|
||||
/typedef struct xfs_sb/ { structon = 1; next }
|
||||
structon && $2 ~ /^sb_/ { sub(/[;,]/,"",$2)
|
||||
print "printf(\"offsetof(xfs_sb_t,", $2, ") = %d\\n\", offsetof(xfs_sb_t,", $2, "));"; next}
|
||||
structon && /}/ { structon = 0; next}
|
||||
'>>$cprog
|
||||
|
||||
echo 'return 0; }' >>$cprog
|
||||
|
||||
# create and run program
|
||||
cc -o $oprog $cprog
|
||||
eval $oprog
|
||||
|
||||
status=0
|
||||
@@ -0,0 +1,123 @@
|
||||
QA output created by 122
|
||||
sizeof( xfs_agf_t ) = 60
|
||||
sizeof( xfs_agi_t ) = 296
|
||||
sizeof( xfs_agfl_t ) = 4
|
||||
sizeof( xfs_alloc_rec_t ) = 8
|
||||
sizeof( xfs_alloc_rec_incore_t ) = 8
|
||||
sizeof( xfs_alloctype_t ) = 4
|
||||
sizeof( xfs_attr_leaf_map_t ) = 4
|
||||
sizeof( xfs_attr_leaf_hdr_t ) = 32
|
||||
sizeof( xfs_attr_leaf_entry_t ) = 8
|
||||
sizeof( xfs_attr_leaf_name_local_t ) = 4
|
||||
sizeof( xfs_attr_leaf_name_remote_t ) = 12
|
||||
sizeof( xfs_attr_leafblock_t ) = 56
|
||||
sizeof( xfs_attr_inactive_list_t ) = 8
|
||||
sizeof( xfs_attr_shortform_t ) = 8
|
||||
sizeof( xfs_bmdr_block_t ) = 4
|
||||
sizeof( xfs_bmbt_rec_32_t ) = 16
|
||||
sizeof( xfs_bmbt_rec_64_t ) = 16
|
||||
sizeof( xfs_exntfmt_t ) = 4
|
||||
sizeof( xfs_exntst_t ) = 4
|
||||
sizeof( xfs_bmbt_key_t ) = 8
|
||||
sizeof( xfs_btree_sblock_t ) = 16
|
||||
sizeof( xfs_btree_lblock_t ) = 24
|
||||
sizeof( xfs_btree_hdr_t ) = 8
|
||||
sizeof( xfs_btree_block_t ) = 24
|
||||
sizeof( xfs_buf_log_format_v1_t ) = 20
|
||||
sizeof( xfs_buf_log_format_t ) = 24
|
||||
sizeof( xfs_da_blkinfo_t ) = 12
|
||||
sizeof( xfs_da_intnode_t ) = 24
|
||||
sizeof( xfs_timestamp_t ) = 8
|
||||
sizeof( xfs_dinode_core_t ) = 96
|
||||
sizeof( xfs_dinode_fmt_t ) = 4
|
||||
sizeof( xfs_dir2_data_free_t ) = 4
|
||||
sizeof( xfs_dir2_data_hdr_t ) = 16
|
||||
sizeof( xfs_dir2_data_unused_t ) = 6
|
||||
sizeof( xfs_dir2_leaf_hdr_t ) = 16
|
||||
sizeof( xfs_dir2_leaf_entry_t ) = 8
|
||||
sizeof( xfs_dir2_leaf_tail_t ) = 4
|
||||
sizeof( xfs_dir2_leaf_t ) = 32
|
||||
sizeof( xfs_dir2_free_hdr_t ) = 16
|
||||
sizeof( xfs_dir2_free_t ) = 20
|
||||
sizeof( xfs_dir2_ino8_t ) = 8
|
||||
sizeof( xfs_dir2_ino4_t ) = 4
|
||||
sizeof( xfs_dir2_inou_t ) = 8
|
||||
sizeof( xfs_dir2_sf_off_t ) = 2
|
||||
sizeof( xfs_dir2_sf_hdr_t ) = 10
|
||||
sizeof( xfs_dir2_sf_entry_t ) = 12
|
||||
sizeof( xfs_dir2_sf_t ) = 22
|
||||
sizeof( xfs_dir_leaf_map_t ) = 4
|
||||
sizeof( xfs_dir_leaf_hdr_t ) = 32
|
||||
sizeof( xfs_dir_leaf_entry_t ) = 8
|
||||
sizeof( xfs_dir_leaf_name_t ) = 9
|
||||
sizeof( xfs_dir_leafblock_t ) = 52
|
||||
sizeof( xfs_dircook_t ) = 8
|
||||
sizeof( xfs_dir_sf_hdr_t ) = 9
|
||||
sizeof( xfs_dir_sf_entry_t ) = 10
|
||||
sizeof( xfs_dir_shortform_t ) = 19
|
||||
sizeof( xfs_fsop_geom_t ) = 112
|
||||
sizeof( xfs_fsop_counts_t ) = 32
|
||||
sizeof( xfs_fsop_resblks_t ) = 16
|
||||
sizeof( xfs_growfs_log_t ) = 8
|
||||
sizeof( xfs_error_injection_t ) = 8
|
||||
sizeof( xfs_attrlist_cursor_t ) = 16
|
||||
sizeof( xfs_fsid_t ) = 8
|
||||
sizeof( xfs_fid_t ) = 16
|
||||
sizeof( xfs_fid2_t ) = 16
|
||||
sizeof( xfs_handle_t ) = 24
|
||||
sizeof( xfs_inobt_rec_t ) = 16
|
||||
sizeof( xfs_inobt_key_t ) = 4
|
||||
sizeof( xfs_trans_reservations_t ) = 84
|
||||
sizeof( xfs_disk_dquot_t ) = 104
|
||||
sizeof( xfs_dqblk_t ) = 136
|
||||
sizeof( xfs_dq_logformat_t ) = 24
|
||||
sizeof( xfs_qoff_logformat_t ) = 20
|
||||
sizeof( xfs_sb_field_t ) = 4
|
||||
sizeof( xfs_trans_header_t ) = 16
|
||||
sizeof( xfs_lookup_t ) = 4
|
||||
sizeof( xfs_btnum_t ) = 4
|
||||
offsetof(xfs_sb_t, sb_magicnum ) = 0
|
||||
offsetof(xfs_sb_t, sb_blocksize ) = 4
|
||||
offsetof(xfs_sb_t, sb_dblocks ) = 8
|
||||
offsetof(xfs_sb_t, sb_rblocks ) = 16
|
||||
offsetof(xfs_sb_t, sb_rextents ) = 24
|
||||
offsetof(xfs_sb_t, sb_uuid ) = 32
|
||||
offsetof(xfs_sb_t, sb_logstart ) = 48
|
||||
offsetof(xfs_sb_t, sb_rootino ) = 56
|
||||
offsetof(xfs_sb_t, sb_rbmino ) = 64
|
||||
offsetof(xfs_sb_t, sb_rsumino ) = 72
|
||||
offsetof(xfs_sb_t, sb_rextsize ) = 80
|
||||
offsetof(xfs_sb_t, sb_agblocks ) = 84
|
||||
offsetof(xfs_sb_t, sb_agcount ) = 88
|
||||
offsetof(xfs_sb_t, sb_rbmblocks ) = 92
|
||||
offsetof(xfs_sb_t, sb_logblocks ) = 96
|
||||
offsetof(xfs_sb_t, sb_versionnum ) = 100
|
||||
offsetof(xfs_sb_t, sb_sectsize ) = 102
|
||||
offsetof(xfs_sb_t, sb_inodesize ) = 104
|
||||
offsetof(xfs_sb_t, sb_inopblock ) = 106
|
||||
offsetof(xfs_sb_t, sb_fname[12] ) = 120
|
||||
offsetof(xfs_sb_t, sb_blocklog ) = 120
|
||||
offsetof(xfs_sb_t, sb_sectlog ) = 121
|
||||
offsetof(xfs_sb_t, sb_inodelog ) = 122
|
||||
offsetof(xfs_sb_t, sb_inopblog ) = 123
|
||||
offsetof(xfs_sb_t, sb_agblklog ) = 124
|
||||
offsetof(xfs_sb_t, sb_rextslog ) = 125
|
||||
offsetof(xfs_sb_t, sb_inprogress ) = 126
|
||||
offsetof(xfs_sb_t, sb_imax_pct ) = 127
|
||||
offsetof(xfs_sb_t, sb_icount ) = 128
|
||||
offsetof(xfs_sb_t, sb_ifree ) = 136
|
||||
offsetof(xfs_sb_t, sb_fdblocks ) = 144
|
||||
offsetof(xfs_sb_t, sb_frextents ) = 152
|
||||
offsetof(xfs_sb_t, sb_uquotino ) = 160
|
||||
offsetof(xfs_sb_t, sb_gquotino ) = 168
|
||||
offsetof(xfs_sb_t, sb_qflags ) = 176
|
||||
offsetof(xfs_sb_t, sb_flags ) = 178
|
||||
offsetof(xfs_sb_t, sb_shared_vn ) = 179
|
||||
offsetof(xfs_sb_t, sb_inoalignmt ) = 180
|
||||
offsetof(xfs_sb_t, sb_unit ) = 184
|
||||
offsetof(xfs_sb_t, sb_width ) = 188
|
||||
offsetof(xfs_sb_t, sb_dirblklog ) = 192
|
||||
offsetof(xfs_sb_t, sb_logsectlog ) = 193
|
||||
offsetof(xfs_sb_t, sb_logsectsize ) = 194
|
||||
offsetof(xfs_sb_t, sb_logsunit ) = 196
|
||||
offsetof(xfs_sb_t, sb_features2 ) = 200
|
||||
Reference in New Issue
Block a user