Re: [PATCH] generic/392: support to test fallocate

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



On Sun, Nov 05, 2017 at 08:39:35PM +0800, Chao Yu wrote:
> From: Chao Yu <yuchao0@xxxxxxxxxx>
> 
> f2fs can skip isize updating in fsync(), since during mount, f2fs tries
> to recovery isize according to valid block address or preallocated flag
> in last fsynced dnode block.
> 
> However, fallocate() breaks our rule with setting FALLOC_FL_KEEP_SIZE
> flag, since it can preallocated block cross EOF, once the file is fsynced,
> in POR, we will recover isize incorrectly based on these fallocated
> blocks.
> 
> This patch enables generic/392 to test fallocate case, in order to verify
> whether filesystem will do incorrect recovery on isize.
> 
> Signed-off-by: Chao Yu <yuchao0@xxxxxxxxxx>

Usually we don't add new sub-tests to existing tests, so new failures
introduced by the new sub-tests won't be treated as false regressions.
Please add a new test instead. (I notice the new falloc test fails on
ext4 too, the allocated block counts changed after power cycle).

> ---
>  tests/generic/392     | 14 ++++++++++++++
>  tests/generic/392.out |  6 ++++++
>  2 files changed, 20 insertions(+)
> 
> diff --git a/tests/generic/392 b/tests/generic/392
> index 6922f7d2..f4ebeb2f 100755
> --- a/tests/generic/392
> +++ b/tests/generic/392
> @@ -125,12 +125,26 @@ test_punch()
>  	check_inode_metadata $1
>  }
>  
> +test_falloc()
> +{
> +	echo "==== falloc $2 test with $1 ====" | tee -a $seqres.full
> +	$XFS_IO_PROG -f -c "truncate 4202496"	\
> +			-c "pwrite 0 4202496"	\
> +			-c "fsync"		\
> +			-c "falloc -k 4202496 $2"\

Need to require falloc -k support by

_require_xfs_io_command "falloc" "-k"

And maybe test falloc without keep_size too?

Thanks,
Eryu

> +			$testfile >/dev/null
> +	check_inode_metadata $1
> +}
> +
>  for i in fsync fdatasync; do
>  	test_i_size $i 1024
>  	test_i_size $i 4096
>  	test_i_time $i
>  	test_punch $i 1024
>  	test_punch $i 4096
> +	test_falloc $i 1024
> +	test_falloc $i 4096
> +	test_falloc $i 104857600
>  done
>  
>  exit
> diff --git a/tests/generic/392.out b/tests/generic/392.out
> index 5d3330a6..d278bdf9 100644
> --- a/tests/generic/392.out
> +++ b/tests/generic/392.out
> @@ -4,8 +4,14 @@ QA output created by 392
>  ==== i_time test with fsync ====
>  ==== fpunch 1024 test with fsync ====
>  ==== fpunch 4096 test with fsync ====
> +==== falloc 1024 test with fsync ====
> +==== falloc 4096 test with fsync ====
> +==== falloc 104857600 test with fsync ====
>  ==== i_size 1024 test with fdatasync ====
>  ==== i_size 4096 test with fdatasync ====
>  ==== i_time test with fdatasync ====
>  ==== fpunch 1024 test with fdatasync ====
>  ==== fpunch 4096 test with fdatasync ====
> +==== falloc 1024 test with fdatasync ====
> +==== falloc 4096 test with fdatasync ====
> +==== falloc 104857600 test with fdatasync ====
> -- 
> 2.14.1.145.gb3622a4ee
> 
--
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