[LTP] [PATCH v3 2/2] Add test for data integrity over NFS

Petr Vorel pvorel@suse.cz
Thu Dec 5 12:10:14 CET 2024


> Add NFS test which checks data integrity of random writes into a file,
> with both buffered and direct I/O.

> Signed-off-by: Martin Doucha <mdoucha@suse.cz>
> ---

> Changes since v1: Added TST_TIMEOUT

> Changes since v2: Force NFS blocksize to the underlying FS blocksize

> By default, NFS uses very large blocksize (up to 1MB) to optimize network
> communication. For the FS integrity test this means a significant slowdown
> because the size of the test file and I/O operations increase with
> blocksize. Autodetect the blocksize of the underlying filesystem and force
> the same value during NFS mount to speed things up.

> The TST_TIMEOUT value is calculated as worst-case scenario for 64KB
> blocksize. On reasonably modern x86_64 machines, the new tests take about
> 6 minutes to complete in total (with Btrfs, Ext4 and XFS being tested).

+1. I also did some testing. BTW TST_TIMEOUT is for single filesystem, thus 11
min is really safe enough even for slow machines like emulated risc-v.

> +++ b/testcases/network/nfs/nfs_stress/nfs10.sh
> @@ -0,0 +1,47 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +# Copyright (C) 2024 SUSE LLC <mdoucha@suse.cz>
> +#
> +# DESCRIPTION: Verify data integrity over NFS, with and without O_DIRECT
> +
> +TST_CNT=4
> +TST_SETUP="nfs10_setup"
> +TST_TESTFUNC="do_test"
> +TST_DEVICE_SIZE=1024
> +TST_TIMEOUT=660
> +
> +nfs10_setup()
> +{
> +	local bsize=$(stat -f -c %s .)
> +
> +	bsize=$(( $bsize < 1024 ? 1024 : $bsize ))

nit: this would work if stat is not installed (minimal systems) or fails for
some reason:

if [ -z "$bsize" ] || [ "$bsize" -lt 1024 ]; then
	bsize=1024
fi

If you agree, I can change it during merge.
Otherwise LGTM.

Thank you!
Reviewed-by: Petr Vorel <pvorel@suse.cz>

Kind regards,
Petr

> +	NFS_MOUNT_OPTS="rsize=$bsize,wsize=$bsize"
> +	nfs_setup


More information about the ltp mailing list