Re: [PATCH] fuzzy: skip online scrub and health checks if not supported

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



On Mon, May 22, 2023 at 11:27:12PM +0200, Anthony Iliopoulos wrote:
> Commit a27e6e6f4c18 introduced xfs health checking on no-repair fuzz,
> which in turn requires scrub to be run before that. The health checks
> are done only if scrub returns with an error (which is expected as an
> indication that fuzzed metadata errors were picked up), but the code
> does not discern between xfs_scrub returning an error because of
> uncorrected metadata vs failing because the kernel does not support
> scrub at all.
> 
> This causes all tests that do fuzzing with no-repair strategy to fail on
> kernels compiled without online scrub support (CONFIG_XFS_ONLINE_SCRUB).
> 
> Skip scrub and health checks altogether, if the kernel does not support
> it, since the tests are still valuable.
> 
> Fixes: a27e6e6f4c18 ("common: check xfs health after doing an online scrub")
> Signed-off-by: Anthony Iliopoulos <ailiop@xxxxxxxx>

At first I thought "Doesn't the _require_scrub in (say) xfs/466 prevent
this test from running at all?"  But then I remembered that helper only
checks for the existence of the xfs_scrub program; it doesn't actually
verify that the kernel works.

I probably need to do more work making sure that the
online/offline/bothrepair tests actually go away if the kernel support
isn't there.  In the meantime, I think this is correct so

Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx>

--D


> ---
>  common/fuzzy | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/common/fuzzy b/common/fuzzy
> index 4365e7343e92..a78a354142df 100644
> --- a/common/fuzzy
> +++ b/common/fuzzy
> @@ -422,6 +422,12 @@ __scratch_xfs_fuzz_field_norepair() {
>  		return 1
>  	fi
>  
> +	# Skip scrub and health check if scrub is not supported
> +	if ! _supports_xfs_scrub $SCRATCH_MNT $SCRATCH_DEV; then
> +		__scratch_xfs_fuzz_unmount
> +		return 0
> +	fi
> +
>  	# Make sure online scrub will catch whatever we fuzzed
>  	__fuzz_notify "++ Detect fuzzed field (online)"
>  	_scratch_scrub -n -a 1 -e continue 2>&1
> -- 
> 2.40.0
> 



[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