diff mbox series

[2/4] xfs: refactor filesystem directory block size extraction logic

Message ID 166681100562.3403789.14498721397451474651.stgit@magnolia (mailing list archive)
State Superseded
Headers show
Series fstests: refactor xfs geometry computation | expand

Commit Message

Darrick J. Wong Oct. 26, 2022, 7:03 p.m. UTC
From: Darrick J. Wong <djwong@kernel.org>

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@kernel.org>
---
 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(-)

Comments

Zorro Lang Oct. 27, 2022, 4:59 p.m. UTC | #1
On Wed, Oct 26, 2022 at 12:03:25PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
> 
> 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@kernel.org>
> ---

Hmm... sorry I failed to merge this patchset:

$ git am ./20221026_djwong_fstests_refactor_xfs_geometry_computation.mbx
Applying: xfs: refactor filesystem feature detection logic
Applying: xfs: refactor filesystem directory block size extraction logic
error: sha1 information is lacking or useless (common/xfs).
error: could not build fake ancestor
Patch failed at 0002 xfs: refactor filesystem directory block size extraction logic
hint: Use 'git am --show-current-patch=diff' to see the failed patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

>  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'
> +}
> +
>  # 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))"
>
Darrick J. Wong Oct. 27, 2022, 5:03 p.m. UTC | #2
On Fri, Oct 28, 2022 at 12:59:16AM +0800, Zorro Lang wrote:
> On Wed, Oct 26, 2022 at 12:03:25PM -0700, Darrick J. Wong wrote:
> > From: Darrick J. Wong <djwong@kernel.org>
> > 
> > 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@kernel.org>
> > ---
> 
> Hmm... sorry I failed to merge this patchset:
> 
> $ git am ./20221026_djwong_fstests_refactor_xfs_geometry_computation.mbx
> Applying: xfs: refactor filesystem feature detection logic
> Applying: xfs: refactor filesystem directory block size extraction logic
> error: sha1 information is lacking or useless (common/xfs).
> error: could not build fake ancestor
> Patch failed at 0002 xfs: refactor filesystem directory block size extraction logic
> hint: Use 'git am --show-current-patch=diff' to see the failed patch
> When you have resolved this problem, run "git am --continue".
> If you prefer to skip this patch, run "git am --skip" instead.
> To restore the original branch and stop patching, run "git am --abort".

I don't know what exactly failed, but if you're ok with pushing your
working branch to kernel.org, I can rebase my changes atop that and
send you a pull request.

--D

> >  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'
> > +}
> > +
> >  # 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))"
> > 
>
Zorro Lang Oct. 28, 2022, 6:08 a.m. UTC | #3
On Thu, Oct 27, 2022 at 10:03:05AM -0700, Darrick J. Wong wrote:
> On Fri, Oct 28, 2022 at 12:59:16AM +0800, Zorro Lang wrote:
> > On Wed, Oct 26, 2022 at 12:03:25PM -0700, Darrick J. Wong wrote:
> > > From: Darrick J. Wong <djwong@kernel.org>
> > > 
> > > 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@kernel.org>
> > > ---
> > 
> > Hmm... sorry I failed to merge this patchset:
> > 
> > $ git am ./20221026_djwong_fstests_refactor_xfs_geometry_computation.mbx
> > Applying: xfs: refactor filesystem feature detection logic
> > Applying: xfs: refactor filesystem directory block size extraction logic
> > error: sha1 information is lacking or useless (common/xfs).
> > error: could not build fake ancestor
> > Patch failed at 0002 xfs: refactor filesystem directory block size extraction logic
> > hint: Use 'git am --show-current-patch=diff' to see the failed patch
> > When you have resolved this problem, run "git am --continue".
> > If you prefer to skip this patch, run "git am --skip" instead.
> > To restore the original branch and stop patching, run "git am --abort".
> 
> I don't know what exactly failed, but if you're ok with pushing your
> working branch to kernel.org, I can rebase my changes atop that and
> send you a pull request.

Hi Darrick,

Not my working branch, it failed on offical for-next branch too. By checking the
patch 2/4, I found (see below) ...

> 
> --D
> 
> > >  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()

...
I can't find this _xfs_is_realtime_file() in my common/xfs, did I miss someone
prepositive patch?

Thanks,
Zorro

> > >  	$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'
> > > +}
> > > +
> > >  # 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))"
> > > 
> > 
>
Darrick J. Wong Oct. 28, 2022, 4:21 p.m. UTC | #4
On Fri, Oct 28, 2022 at 02:08:14PM +0800, Zorro Lang wrote:
> On Thu, Oct 27, 2022 at 10:03:05AM -0700, Darrick J. Wong wrote:
> > On Fri, Oct 28, 2022 at 12:59:16AM +0800, Zorro Lang wrote:
> > > On Wed, Oct 26, 2022 at 12:03:25PM -0700, Darrick J. Wong wrote:
> > > > From: Darrick J. Wong <djwong@kernel.org>
> > > > 
> > > > 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@kernel.org>
> > > > ---
> > > 
> > > Hmm... sorry I failed to merge this patchset:
> > > 
> > > $ git am ./20221026_djwong_fstests_refactor_xfs_geometry_computation.mbx
> > > Applying: xfs: refactor filesystem feature detection logic
> > > Applying: xfs: refactor filesystem directory block size extraction logic
> > > error: sha1 information is lacking or useless (common/xfs).
> > > error: could not build fake ancestor
> > > Patch failed at 0002 xfs: refactor filesystem directory block size extraction logic
> > > hint: Use 'git am --show-current-patch=diff' to see the failed patch
> > > When you have resolved this problem, run "git am --continue".
> > > If you prefer to skip this patch, run "git am --skip" instead.
> > > To restore the original branch and stop patching, run "git am --abort".
> > 
> > I don't know what exactly failed, but if you're ok with pushing your
> > working branch to kernel.org, I can rebase my changes atop that and
> > send you a pull request.
> 
> Hi Darrick,
> 
> Not my working branch, it failed on offical for-next branch too. By checking the
> patch 2/4, I found (see below) ...
> 
> > 
> > --D
> > 
> > > >  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()
> 
> ...
> I can't find this _xfs_is_realtime_file() in my common/xfs, did I miss someone
> prepositive patch?

It was added in the xfs_scrub phase6 functional test that's out for
review:

https://lore.kernel.org/fstests/166613311880.868072.17189668251232287066.stgit@magnolia/

That said, this patch doesn't modify _xfs_is_realtime_file; all it does
is inserts _xfs_get_dir_blocksize above _xfs_force_bdev.  That's
probably where git am got confused.

--D

> Thanks,
> Zorro
> 
> > > >  	$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'
> > > > +}
> > > > +
> > > >  # 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))"
> > > > 
> > > 
> >
Zorro Lang Oct. 28, 2022, 4:55 p.m. UTC | #5
On Fri, Oct 28, 2022 at 09:21:35AM -0700, Darrick J. Wong wrote:
> On Fri, Oct 28, 2022 at 02:08:14PM +0800, Zorro Lang wrote:
> > On Thu, Oct 27, 2022 at 10:03:05AM -0700, Darrick J. Wong wrote:
> > > On Fri, Oct 28, 2022 at 12:59:16AM +0800, Zorro Lang wrote:
> > > > On Wed, Oct 26, 2022 at 12:03:25PM -0700, Darrick J. Wong wrote:
> > > > > From: Darrick J. Wong <djwong@kernel.org>
> > > > > 
> > > > > 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@kernel.org>
> > > > > ---
> > > > 
> > > > Hmm... sorry I failed to merge this patchset:
> > > > 
> > > > $ git am ./20221026_djwong_fstests_refactor_xfs_geometry_computation.mbx
> > > > Applying: xfs: refactor filesystem feature detection logic
> > > > Applying: xfs: refactor filesystem directory block size extraction logic
> > > > error: sha1 information is lacking or useless (common/xfs).
> > > > error: could not build fake ancestor
> > > > Patch failed at 0002 xfs: refactor filesystem directory block size extraction logic
> > > > hint: Use 'git am --show-current-patch=diff' to see the failed patch
> > > > When you have resolved this problem, run "git am --continue".
> > > > If you prefer to skip this patch, run "git am --skip" instead.
> > > > To restore the original branch and stop patching, run "git am --abort".
> > > 
> > > I don't know what exactly failed, but if you're ok with pushing your
> > > working branch to kernel.org, I can rebase my changes atop that and
> > > send you a pull request.
> > 
> > Hi Darrick,
> > 
> > Not my working branch, it failed on offical for-next branch too. By checking the
> > patch 2/4, I found (see below) ...
> > 
> > > 
> > > --D
> > > 
> > > > >  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()
> > 
> > ...
> > I can't find this _xfs_is_realtime_file() in my common/xfs, did I miss someone
> > prepositive patch?
> 
> It was added in the xfs_scrub phase6 functional test that's out for
> review:
> 
> https://lore.kernel.org/fstests/166613311880.868072.17189668251232287066.stgit@magnolia/

Wow, sorry I forgot this one patch, feel free to ping me if your patch not get
reviewing for long time :)

> 
> That said, this patch doesn't modify _xfs_is_realtime_file; all it does
> is inserts _xfs_get_dir_blocksize above _xfs_force_bdev.  That's
> probably where git am got confused.

Could you rebase this patchset to current for-next branch, if you'd like
to have this change in fstests release of this weekend? That "xfs_scrub
phase6 functional test" patch is not a simple change, I need time to
read and test it more before merging it :-D

Thanks,
Zorro

> 
> --D
> 
> > Thanks,
> > Zorro
> > 
> > > > >  	$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'
> > > > > +}
> > > > > +
> > > > >  # 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))"
> > > > > 
> > > > 
> > > 
>
diff mbox series

Patch

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'
+}
+
 # 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))"