On Wed, Dec 07, 2022 at 05:31:46PM +0800, Ziyang Zhang wrote: > Some xfs test cases need the number of bytes reserved for only the inode > record, excluding the immediate fork areas. Now the value is hard-coded > and it is not a good chioce. Add a helper in common/xfs to export the > inode core size. > > Signed-off-by: Ziyang Zhang <ZiyangZhang@xxxxxxxxxxxxxxxxx> > --- Darrick has given RVB to this patch, if you didn't change anything from V3 ou can keep it: Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> > common/xfs | 15 +++++++++++++++ > tests/xfs/335 | 3 ++- > tests/xfs/336 | 3 ++- > tests/xfs/337 | 3 ++- > tests/xfs/341 | 3 ++- > tests/xfs/342 | 3 ++- > 6 files changed, 25 insertions(+), 5 deletions(-) > > diff --git a/common/xfs b/common/xfs > index 8ac1964e..5074c350 100644 > --- a/common/xfs > +++ b/common/xfs > @@ -1486,3 +1486,18 @@ _require_xfsrestore_xflag() > $XFSRESTORE_PROG -h 2>&1 | grep -q -e '-x' || \ > _notrun 'xfsrestore does not support -x flag.' > } > + > +# Number of bytes reserved for only the inode record, excluding the > +# immediate fork areas. > +_xfs_inode_core_bytes() > +{ > + local dir="$1" > + > + if _xfs_has_feature "$dir" crc; then > + # v5 filesystems > + echo 176 > + else > + # v4 filesystems > + echo 96 > + fi > +} > diff --git a/tests/xfs/335 b/tests/xfs/335 > index ccc508e7..2fd9be54 100755 > --- a/tests/xfs/335 > +++ b/tests/xfs/335 > @@ -31,7 +31,8 @@ blksz="$(_get_block_size $SCRATCH_MNT)" > echo "Create a three-level rtrmapbt" > # inode core size is at least 176 bytes; btree header is 56 bytes; > # rtrmap record is 32 bytes; and rtrmap key/pointer are 56 bytes. > -i_ptrs=$(( (isize - 176) / 56 )) > +i_core_size="$(_xfs_inode_core_bytes $SCRATCH_MNT)" > +i_ptrs=$(( (isize - i_core_size) / 56 )) > bt_ptrs=$(( (blksz - 56) / 56 )) > bt_recs=$(( (blksz - 56) / 32 )) > > diff --git a/tests/xfs/336 b/tests/xfs/336 > index b1de8e5f..085b43ae 100755 > --- a/tests/xfs/336 > +++ b/tests/xfs/336 > @@ -42,7 +42,8 @@ rm -rf $metadump_file > echo "Create a three-level rtrmapbt" > # inode core size is at least 176 bytes; btree header is 56 bytes; > # rtrmap record is 32 bytes; and rtrmap key/pointer are 56 bytes. > -i_ptrs=$(( (isize - 176) / 56 )) > +i_core_size="$(_xfs_inode_core_bytes $SCRATCH_MNT)" > +i_ptrs=$(( (isize - i_core_size) / 56 )) > bt_ptrs=$(( (blksz - 56) / 56 )) > bt_recs=$(( (blksz - 56) / 32 )) > > diff --git a/tests/xfs/337 b/tests/xfs/337 > index a2515e36..5d6b9964 100755 > --- a/tests/xfs/337 > +++ b/tests/xfs/337 > @@ -33,7 +33,8 @@ blksz="$(_get_block_size $SCRATCH_MNT)" > > # inode core size is at least 176 bytes; btree header is 56 bytes; > # rtrmap record is 32 bytes; and rtrmap key/pointer are 56 bytes. > -i_ptrs=$(( (isize - 176) / 56 )) > +i_core_size="$(_xfs_inode_core_bytes $SCRATCH_MNT)" > +i_ptrs=$(( (isize - i_core_size) / 56 )) > bt_ptrs=$(( (blksz - 56) / 56 )) > bt_recs=$(( (blksz - 56) / 32 )) > > diff --git a/tests/xfs/341 b/tests/xfs/341 > index f026aa37..c70dec3c 100755 > --- a/tests/xfs/341 > +++ b/tests/xfs/341 > @@ -33,7 +33,8 @@ rtextsz_blks=$((rtextsz / blksz)) > > # inode core size is at least 176 bytes; btree header is 56 bytes; > # rtrmap record is 32 bytes; and rtrmap key/pointer are 56 bytes. > -i_ptrs=$(( (isize - 176) / 56 )) > +i_core_size="$(_xfs_inode_core_bytes $SCRATCH_MNT)" > +i_ptrs=$(( (isize - i_core_size) / 56 )) > bt_recs=$(( (blksz - 56) / 32 )) > > blocks=$((i_ptrs * bt_recs + 1)) > diff --git a/tests/xfs/342 b/tests/xfs/342 > index 1ae414eb..4855627f 100755 > --- a/tests/xfs/342 > +++ b/tests/xfs/342 > @@ -30,7 +30,8 @@ blksz="$(_get_block_size $SCRATCH_MNT)" > > # inode core size is at least 176 bytes; btree header is 56 bytes; > # rtrmap record is 32 bytes; and rtrmap key/pointer are 56 bytes. > -i_ptrs=$(( (isize - 176) / 56 )) > +i_core_size="$(_xfs_inode_core_bytes $SCRATCH_MNT)" > +i_ptrs=$(( (isize - i_core_size) / 56 )) > bt_recs=$(( (blksz - 56) / 32 )) > > blocks=$((i_ptrs * bt_recs + 1)) > -- > 2.18.4 >