Message ID | 37d65f1026f2fc1f2d13ab54980de93f4fa34c46.1647342932.git.riteshh@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | generic: Add some tests around journal replay/recoveryloop | expand |
On Tue, Mar 15, 2022 at 07:58:59PM +0530, Ritesh Harjani wrote: > With these sequence of operation (in certain cases like with ext4 fast_commit) > could miss to track unwritten extents during replay phase > (after sudden FS shutdown). > > This fstest adds a test case to test this. > > 5e4d0eba1ccaf19f > ext4: fix fast commit may miss tracking range for FALLOC_FL_ZERO_RANGE > > Signed-off-by: Ritesh Harjani <riteshh@linux.ibm.com> > --- > tests/generic/677 | 64 +++++++++++++++++++++++++++++++++++++++++++ > tests/generic/677.out | 6 ++++ > 2 files changed, 70 insertions(+) > create mode 100755 tests/generic/677 > create mode 100644 tests/generic/677.out > > diff --git a/tests/generic/677 b/tests/generic/677 > new file mode 100755 > index 00000000..e316763a > --- /dev/null > +++ b/tests/generic/677 > @@ -0,0 +1,64 @@ > +#! /bin/bash > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright (c) 2022 IBM Corporation. All Rights Reserved. > +# > +# FS QA Test 677 > +# > +# Test below sequence of operation which (w/o below kernel patch) in case of > +# ext4 with fast_commit may misss to track unwritten extents. > +# commit 5e4d0eba1ccaf19f > +# ext4: fix fast commit may miss tracking range for FALLOC_FL_ZERO_RANGE > +# > +. ./common/preamble > +_begin_fstest auto quick log shutdown recoveryloop > + > +# Override the default cleanup function. > +_cleanup() > +{ > + cd / > + rm -r -f $tmp.* > +} > + > +# Import common functions. > +. ./common/filter > +. ./common/punch > + > +# real QA test starts here > + > +# Modify as appropriate. > +_supported_fs generic > +_require_scratch > +_require_xfs_io_command "fzero" > +_require_xfs_io_command "fiemap" > + > +t1=$SCRATCH_MNT/t1 > + > +_scratch_mkfs > $seqres.full 2>&1 > + > +_scratch_mount >> $seqres.full 2>&1 > + > +bs=$(_get_block_size $SCRATCH_MNT) Same comments about blocksize, group names, and _require_scratch_shutdown as the last patch. --D > + > +# create and write data to t1 > +$XFS_IO_PROG -f -c "pwrite 0 $((100*$bs))" $t1 | _filter_xfs_io_numbers > + > +# fsync t1 > +$XFS_IO_PROG -c "fsync" $t1 > + > +# fzero certain range in between > +$XFS_IO_PROG -c "fzero -k $((40*$bs)) $((20*$bs))" $t1 > + > +# fsync t1 > +$XFS_IO_PROG -c "fsync" $t1 > + > +# shutdown FS now for replay of journal to kick during next mount > +_scratch_shutdown -v >> $seqres.full 2>&1 > + > +_scratch_cycle_mount > + > +# check fiemap reported is valid or not > +$XFS_IO_PROG -c "fiemap -v" $t1 | _filter_fiemap_flags $bs > + > +# success, all done > +status=0 > +exit > diff --git a/tests/generic/677.out b/tests/generic/677.out > new file mode 100644 > index 00000000..b91ab77a > --- /dev/null > +++ b/tests/generic/677.out > @@ -0,0 +1,6 @@ > +QA output created by 677 > +wrote XXXX/XXXX bytes at offset XXXX > +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > +0: [0..39]: none > +1: [40..59]: unwritten > +2: [60..99]: nonelast > -- > 2.31.1 >
On 22/03/15 09:56AM, Darrick J. Wong wrote: > On Tue, Mar 15, 2022 at 07:58:59PM +0530, Ritesh Harjani wrote: > > With these sequence of operation (in certain cases like with ext4 fast_commit) > > could miss to track unwritten extents during replay phase > > (after sudden FS shutdown). > > > > This fstest adds a test case to test this. > > > > 5e4d0eba1ccaf19f > > ext4: fix fast commit may miss tracking range for FALLOC_FL_ZERO_RANGE > > > > Signed-off-by: Ritesh Harjani <riteshh@linux.ibm.com> > > --- > > tests/generic/677 | 64 +++++++++++++++++++++++++++++++++++++++++++ > > tests/generic/677.out | 6 ++++ > > 2 files changed, 70 insertions(+) > > create mode 100755 tests/generic/677 > > create mode 100644 tests/generic/677.out > > > > diff --git a/tests/generic/677 b/tests/generic/677 > > new file mode 100755 > > index 00000000..e316763a > > --- /dev/null > > +++ b/tests/generic/677 > > @@ -0,0 +1,64 @@ > > +#! /bin/bash > > +# SPDX-License-Identifier: GPL-2.0 > > +# Copyright (c) 2022 IBM Corporation. All Rights Reserved. > > +# > > +# FS QA Test 677 > > +# > > +# Test below sequence of operation which (w/o below kernel patch) in case of > > +# ext4 with fast_commit may misss to track unwritten extents. > > +# commit 5e4d0eba1ccaf19f > > +# ext4: fix fast commit may miss tracking range for FALLOC_FL_ZERO_RANGE > > +# > > +. ./common/preamble > > +_begin_fstest auto quick log shutdown recoveryloop > > + > > +# Override the default cleanup function. > > +_cleanup() > > +{ > > + cd / > > + rm -r -f $tmp.* > > +} > > + > > +# Import common functions. > > +. ./common/filter > > +. ./common/punch > > + > > +# real QA test starts here > > + > > +# Modify as appropriate. > > +_supported_fs generic > > +_require_scratch > > +_require_xfs_io_command "fzero" > > +_require_xfs_io_command "fiemap" > > + > > +t1=$SCRATCH_MNT/t1 > > + > > +_scratch_mkfs > $seqres.full 2>&1 > > + > > +_scratch_mount >> $seqres.full 2>&1 > > + > > +bs=$(_get_block_size $SCRATCH_MNT) > > Same comments about blocksize, group names, and > _require_scratch_shutdown as the last patch. Sure, I will fix blocksize and _require_scratch_shutdown part. I have added my thoughts above group names in previous patch. Thanks for reviewing this. -ritesh
diff --git a/tests/generic/677 b/tests/generic/677 new file mode 100755 index 00000000..e316763a --- /dev/null +++ b/tests/generic/677 @@ -0,0 +1,64 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2022 IBM Corporation. All Rights Reserved. +# +# FS QA Test 677 +# +# Test below sequence of operation which (w/o below kernel patch) in case of +# ext4 with fast_commit may misss to track unwritten extents. +# commit 5e4d0eba1ccaf19f +# ext4: fix fast commit may miss tracking range for FALLOC_FL_ZERO_RANGE +# +. ./common/preamble +_begin_fstest auto quick log shutdown recoveryloop + +# Override the default cleanup function. +_cleanup() +{ + cd / + rm -r -f $tmp.* +} + +# Import common functions. +. ./common/filter +. ./common/punch + +# real QA test starts here + +# Modify as appropriate. +_supported_fs generic +_require_scratch +_require_xfs_io_command "fzero" +_require_xfs_io_command "fiemap" + +t1=$SCRATCH_MNT/t1 + +_scratch_mkfs > $seqres.full 2>&1 + +_scratch_mount >> $seqres.full 2>&1 + +bs=$(_get_block_size $SCRATCH_MNT) + +# create and write data to t1 +$XFS_IO_PROG -f -c "pwrite 0 $((100*$bs))" $t1 | _filter_xfs_io_numbers + +# fsync t1 +$XFS_IO_PROG -c "fsync" $t1 + +# fzero certain range in between +$XFS_IO_PROG -c "fzero -k $((40*$bs)) $((20*$bs))" $t1 + +# fsync t1 +$XFS_IO_PROG -c "fsync" $t1 + +# shutdown FS now for replay of journal to kick during next mount +_scratch_shutdown -v >> $seqres.full 2>&1 + +_scratch_cycle_mount + +# check fiemap reported is valid or not +$XFS_IO_PROG -c "fiemap -v" $t1 | _filter_fiemap_flags $bs + +# success, all done +status=0 +exit diff --git a/tests/generic/677.out b/tests/generic/677.out new file mode 100644 index 00000000..b91ab77a --- /dev/null +++ b/tests/generic/677.out @@ -0,0 +1,6 @@ +QA output created by 677 +wrote XXXX/XXXX bytes at offset XXXX +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +0: [0..39]: none +1: [40..59]: unwritten +2: [60..99]: nonelast
With these sequence of operation (in certain cases like with ext4 fast_commit) could miss to track unwritten extents during replay phase (after sudden FS shutdown). This fstest adds a test case to test this. 5e4d0eba1ccaf19f ext4: fix fast commit may miss tracking range for FALLOC_FL_ZERO_RANGE Signed-off-by: Ritesh Harjani <riteshh@linux.ibm.com> --- tests/generic/677 | 64 +++++++++++++++++++++++++++++++++++++++++++ tests/generic/677.out | 6 ++++ 2 files changed, 70 insertions(+) create mode 100755 tests/generic/677 create mode 100644 tests/generic/677.out -- 2.31.1