On 2024-01-25 11:04:14, Darrick J. Wong wrote: > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > This test runs 500 iterations of a "fill the fs and try to punch" test. > Hole punching can be particularly slow if, say, the filesystem is > mounted with -odiscard and the DISCARD operation takes a very long time. > In extreme cases, I can see test runtimes of 4+ hours. > > Constrain the runtime of _test_full_fs_punch by establishing a deadline > of (30 seconds * TIME_FACTOR) and breaking out of the for loop if the > test goes beyond the time budget. This keeps the runtime within the > customary 30 seconds. > > Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> > --- > tests/generic/256 | 7 +++++++ > 1 file changed, 7 insertions(+) > > > diff --git a/tests/generic/256 b/tests/generic/256 > index 808a730f3a..ea6cc2938a 100755 > --- a/tests/generic/256 > +++ b/tests/generic/256 > @@ -44,6 +44,8 @@ _test_full_fs_punch() > local file_len=$(( $(( $hole_len + $hole_interval )) * $iterations )) > local path=`dirname $file_name` > local hole_offset=0 > + local start_time > + local stop_time > > if [ $# -ne 5 ] > then > @@ -57,6 +59,9 @@ _test_full_fs_punch() > -c "fsync" $file_name &> /dev/null > chmod 666 $file_name > > + start_time="$(date +%s)" > + stop_time=$(( start_time + (30 * TIME_FACTOR) )) > + > # All files are created as a non root user to prevent reserved blocks > # from being consumed. > _fill_fs $(( 1024 * 1024 * 1024 )) $path/fill $block_size 1 \ > @@ -64,6 +69,8 @@ _test_full_fs_punch() > > for (( i=0; i<$iterations; i++ )) > do > + test "$(date +%s)" -ge "$stop_time" && break > + > # This part must not be done as root in order to > # test that reserved blocks are used when needed > _user_do "$XFS_IO_PROG -f -c \"fpunch $hole_offset $hole_len\" $file_name" > > LGTM Reviewed-by: Andrey Albershteyn <aalbersh@xxxxxxxxxx> -- - Andrey