Re: [PATCH] generic/247: filter out expected XFS warnings for mixed mmap/direct I/O

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



On Wed, Jun 28, 2017 at 10:14:42AM -0400, Brian Foster wrote:
> generic/247 reproduces some of the same, expected warnings from XFS
> as generic/095. These warnings occur due to mixed buffered/mapped
> I/O racing with direct I/O to the same file.
> 
> generic/095 contains a custom dmesg filter to prevent test failure
> in the event of such warnings. Lift the helper from generic/095 to
> common/xfs and reuse it in generic/247 to implement the same
> behavior.
> 
> Signed-off-by: Brian Foster <bfoster@xxxxxxxxxx>

Thanks a lot for doing this! It was in my todo list but I never got to
it..

Some minor issues below, that I can fix them all at commit time.

> ---
>  common/xfs        | 18 ++++++++++++++++++
>  tests/generic/095 | 20 +++-----------------
>  tests/generic/247 | 11 +++++++++--
>  3 files changed, 30 insertions(+), 19 deletions(-)
> 
> diff --git a/common/xfs b/common/xfs
> index 0f0825b..0266f50 100644
> --- a/common/xfs
> +++ b/common/xfs
> @@ -584,3 +584,21 @@ _require_xfs_mkfs_ciname()
>  	_scratch_mkfs_xfs_supported -n version=ci >/dev/null 2>&1 \
>  		|| _notrun "need case-insensitive naming support in mkfs.xfs"
>  }
> +
> +# xfs generates WARNINGs on purpose when applications mix buffered/mmap IO with
> +# direct IO on the same file. This is a helper for _check_dmesg() to filter out
> +# such warnings.
> +filter_xfs_dmesg()

I've renamed it, added a leading underscore _filter_xfs_dmesg, it's
common helper now.

> +{
> +	local warn1="WARNING:.*fs/xfs/xfs_file\.c:.*xfs_file_dio_aio_write.*"
> +	local warn2="WARNING:.*fs/xfs/xfs_file\.c:.*xfs_file_dio_aio_read.*"
> +	local warn3="WARNING:.*fs/xfs/xfs_file\.c:.*xfs_file_read_iter.*"
> +	local warn4="WARNING:.*fs/xfs/xfs_file\.c:.*xfs_file_aio_read.*"
> +	local warn5="WARNING:.*fs/iomap\.c:.*iomap_dio_rw.*"
> +	sed -e "s#$warn1#Intentional warnings in xfs_file_dio_aio_write#" \
> +	    -e "s#$warn2#Intentional warnings in xfs_file_dio_aio_read#" \
> +	    -e "s#$warn3#Intentional warnings in xfs_file_read_iter#" \
> +	    -e "s#$warn4#Intentional warnings in xfs_file_aio_read#" \
> +	    -e "s#$warn5#Intentional warnings in iomap_dio_rw#"
> +}
> +
> diff --git a/tests/generic/095 b/tests/generic/095
> index d837564..9580aaf 100755
> --- a/tests/generic/095
> +++ b/tests/generic/095
> @@ -117,28 +117,14 @@ _scratch_mount
>  echo "Silence is golden"
>  $FIO_PROG $fio_config >>$seqres.full 2>&1
>  
> +# umount before checking dmesg in case umount triggers any WARNING or Oops
> +_scratch_unmount
> +
>  # xfs generates WARNINGs on purpose when applications mix buffered/mmap IO with
>  # direct IO on the same file. On the other hand, this fio job has been proven
>  # to be potent, we don't want to simply _disable_dmesg_check which could miss
>  # other potential bugs. So filter out the intentional WARNINGs, make sure test
>  # doesn't fail because of this warning and fails on other WARNINGs.
> -filter_xfs_dmesg()
> -{
> -	local warn1="WARNING:.*fs/xfs/xfs_file\.c:.*xfs_file_dio_aio_write.*"
> -	local warn2="WARNING:.*fs/xfs/xfs_file\.c:.*xfs_file_dio_aio_read.*"
> -	local warn3="WARNING:.*fs/xfs/xfs_file\.c:.*xfs_file_read_iter.*"
> -	local warn4="WARNING:.*fs/xfs/xfs_file\.c:.*xfs_file_aio_read.*"
> -	local warn5="WARNING:.*fs/iomap\.c:.*iomap_dio_rw.*"
> -	sed -e "s#$warn1#Intentional warnings in xfs_file_dio_aio_write#" \
> -	    -e "s#$warn2#Intentional warnings in xfs_file_dio_aio_read#" \
> -	    -e "s#$warn3#Intentional warnings in xfs_file_read_iter#" \
> -	    -e "s#$warn4#Intentional warnings in xfs_file_aio_read#" \
> -	    -e "s#$warn5#Intentional warnings in iomap_dio_rw#"
> -}
> -
> -# umount before checking dmesg in case umount triggers any WARNING or Oops
> -_scratch_unmount
> -
>  if [ "$FSTYP" == "xfs" ]; then
>  	_check_dmesg filter_xfs_dmesg
>  else
> diff --git a/tests/generic/247 b/tests/generic/247
> index 832ade1..f46ab30 100755
> --- a/tests/generic/247
> +++ b/tests/generic/247
> @@ -80,6 +80,13 @@ wait
>  
>  echo "Silence is golden."
>  
> -# success, all done
> -status=0
> +# unmount and check dmesg, filtering out expected XFS warnings about mixed
> +# mmap/dio
> +_scratch_unmount

generic/247 doesn't take use of SCRATCH_DEV, _scratch_unmount and the
associated comment can be removed.

Thanks,
Eryu

> +if [ "$FSTYP" == "xfs" ]; then
> +	_check_dmesg filter_xfs_dmesg
> +else
> +	_check_dmesg
> +fi
> +status=$?
>  exit
> -- 
> 2.9.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe fstests" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe fstests" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux