On Thu, Oct 20, 2022 at 02:07:50PM +0800, Zorro Lang wrote: > On Tue, Oct 18, 2022 at 03:45:33PM -0700, Darrick J. Wong wrote: > > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > > > There are a lot of places where we open-code determining the directory > > block size for a specific filesystem. Refactor this into a single > > helper to clean up existing tests. > > > > Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> > > --- > > common/populate | 4 ++-- > > common/xfs | 9 +++++++++ > > tests/xfs/099 | 2 +- > > tests/xfs/100 | 2 +- > > tests/xfs/101 | 2 +- > > tests/xfs/102 | 2 +- > > tests/xfs/105 | 2 +- > > tests/xfs/112 | 2 +- > > tests/xfs/113 | 2 +- > > 9 files changed, 18 insertions(+), 9 deletions(-) > > > > > > diff --git a/common/populate b/common/populate > > index 9fa1a06798..23b2fecf69 100644 > > --- a/common/populate > > +++ b/common/populate > > @@ -175,7 +175,7 @@ _scratch_xfs_populate() { > > _xfs_force_bdev data $SCRATCH_MNT > > > > blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" > > - dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" > > + dblksz="$(_xfs_get_dir_blocksize "$SCRATCH_MNT")" > > crc="$(_xfs_has_feature "$SCRATCH_MNT" crc -v)" > > if [ $crc -eq 1 ]; then > > leaf_hdr_size=64 > > @@ -602,7 +602,7 @@ _scratch_xfs_populate_check() { > > is_reflink=$(_xfs_has_feature "$SCRATCH_MNT" reflink -v) > > > > blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" > > - dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" > > + dblksz="$(_xfs_get_dir_blocksize "$SCRATCH_MNT")" > > leaf_lblk="$((32 * 1073741824 / blksz))" > > node_lblk="$((64 * 1073741824 / blksz))" > > umount "${SCRATCH_MNT}" > > diff --git a/common/xfs b/common/xfs > > index c7496bce3f..6445bfd9db 100644 > > --- a/common/xfs > > +++ b/common/xfs > > @@ -203,6 +203,15 @@ _xfs_is_realtime_file() > > $XFS_IO_PROG -c 'stat -v' "$1" | grep -q -w realtime > > } > > > > +# Get the directory block size of a mounted filesystem. > > +_xfs_get_dir_blocksize() > > +{ > > + local fs="$1" > > + > > + $XFS_INFO_PROG "$fs" | grep 'naming.*bsize' | \ > > + sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g' > > As you've used escape char of sed, I think it doesn't need two pipe lines > and two sed commands, how about: > > $XFS_INFO_PROG "$fs" | sed -n "s/^naming.*bsize=\([[:digit:]]*\).*/\1/p" > > Others looks good to me. Oh! I didn't know sed could do that. I'll go make that change. --D > Thanks, > Zorro > > > +} > > + > > # Set or clear the realtime status of every supplied path. The first argument > > # is either 'data' or 'realtime'. All other arguments should be paths to > > # existing directories or empty regular files. > > diff --git a/tests/xfs/099 b/tests/xfs/099 > > index a7eaff6e0c..82bef8ad26 100755 > > --- a/tests/xfs/099 > > +++ b/tests/xfs/099 > > @@ -37,7 +37,7 @@ _scratch_mkfs_xfs > /dev/null > > > > echo "+ mount fs image" > > _scratch_mount > > -dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" > > +dblksz=$(_xfs_get_dir_blocksize "$SCRATCH_MNT") > > nr="$((dblksz / 40))" > > blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" > > leaf_lblk="$((32 * 1073741824 / blksz))" > > diff --git a/tests/xfs/100 b/tests/xfs/100 > > index 79da8cb02c..e638b4ba17 100755 > > --- a/tests/xfs/100 > > +++ b/tests/xfs/100 > > @@ -37,7 +37,7 @@ _scratch_mkfs_xfs > /dev/null > > > > echo "+ mount fs image" > > _scratch_mount > > -dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" > > +dblksz=$(_xfs_get_dir_blocksize "$SCRATCH_MNT") > > nr="$((dblksz / 12))" > > blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" > > leaf_lblk="$((32 * 1073741824 / blksz))" > > diff --git a/tests/xfs/101 b/tests/xfs/101 > > index 64f4705aca..11ed329110 100755 > > --- a/tests/xfs/101 > > +++ b/tests/xfs/101 > > @@ -37,7 +37,7 @@ _scratch_mkfs_xfs > /dev/null > > > > echo "+ mount fs image" > > _scratch_mount > > -dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" > > +dblksz=$(_xfs_get_dir_blocksize "$SCRATCH_MNT") > > nr="$((dblksz / 12))" > > blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" > > leaf_lblk="$((32 * 1073741824 / blksz))" > > diff --git a/tests/xfs/102 b/tests/xfs/102 > > index 24dce43058..43f4539181 100755 > > --- a/tests/xfs/102 > > +++ b/tests/xfs/102 > > @@ -37,7 +37,7 @@ _scratch_mkfs_xfs > /dev/null > > > > echo "+ mount fs image" > > _scratch_mount > > -dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" > > +dblksz=$(_xfs_get_dir_blocksize "$SCRATCH_MNT") > > nr="$((16 * dblksz / 40))" > > blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" > > leaf_lblk="$((32 * 1073741824 / blksz))" > > diff --git a/tests/xfs/105 b/tests/xfs/105 > > index 22a8bf9fb0..002a712883 100755 > > --- a/tests/xfs/105 > > +++ b/tests/xfs/105 > > @@ -37,7 +37,7 @@ _scratch_mkfs_xfs > /dev/null > > > > echo "+ mount fs image" > > _scratch_mount > > -dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" > > +dblksz=$(_xfs_get_dir_blocksize "$SCRATCH_MNT") > > nr="$((16 * dblksz / 40))" > > blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" > > leaf_lblk="$((32 * 1073741824 / blksz))" > > diff --git a/tests/xfs/112 b/tests/xfs/112 > > index bc1ab62895..e2d5932da6 100755 > > --- a/tests/xfs/112 > > +++ b/tests/xfs/112 > > @@ -37,7 +37,7 @@ _scratch_mkfs_xfs > /dev/null > > > > echo "+ mount fs image" > > _scratch_mount > > -dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" > > +dblksz=$(_xfs_get_dir_blocksize "$SCRATCH_MNT") > > nr="$((16 * dblksz / 40))" > > blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" > > leaf_lblk="$((32 * 1073741824 / blksz))" > > diff --git a/tests/xfs/113 b/tests/xfs/113 > > index e820ed96da..9bb2cd304b 100755 > > --- a/tests/xfs/113 > > +++ b/tests/xfs/113 > > @@ -37,7 +37,7 @@ _scratch_mkfs_xfs > /dev/null > > > > echo "+ mount fs image" > > _scratch_mount > > -dblksz="$($XFS_INFO_PROG "${SCRATCH_MNT}" | grep naming.*bsize | sed -e 's/^.*bsize=//g' -e 's/\([0-9]*\).*$/\1/g')" > > +dblksz=$(_xfs_get_dir_blocksize "$SCRATCH_MNT") > > nr="$((128 * dblksz / 40))" > > blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" > > leaf_lblk="$((32 * 1073741824 / blksz))" > >