| #! /bin/bash | 
 | # SPDX-License-Identifier: GPL-2.0 | 
 | # Copyright (c) 2006 Silicon Graphics, Inc.  All Rights Reserved. | 
 | # | 
 | # FSQA Test No. 269 | 
 | # | 
 | # Run fsstress and ENOSPC hitters in parallel, check fs consistency at the end | 
 | # | 
 | . ./common/preamble | 
 | _begin_fstest auto rw prealloc ioctl enospc stress | 
 |  | 
 | # Import common functions. | 
 | . ./common/filter | 
 | # Disable all sync operations to get higher load | 
 | FSSTRESS_AVOID="$FSSTRESS_AVOID -ffsync=0 -fsync=0 -ffdatasync=0" | 
 | _workout() | 
 | { | 
 | 	echo "" | 
 | 	echo "Run fsstress" | 
 | 	echo "" | 
 | 	num_iterations=10 | 
 | 	enospc_time=2 | 
 | 	out=$SCRATCH_MNT/fsstress.$$ | 
 | 	args=`_scale_fsstress_args -p128 -n999999999 -f setattr=1 $FSSTRESS_AVOID -d $out` | 
 | 	echo "fsstress $args" >> $seqres.full | 
 | 	$FSSTRESS_PROG $args > /dev/null 2>&1 & | 
 | 	pid=$! | 
 | 	echo "Run dd writers in parallel" | 
 | 	for ((i=0; i < num_iterations; i++)) | 
 | 	do | 
 | 		# File will be opened with O_TRUNC each time | 
 | 		dd if=/dev/zero of=$SCRATCH_MNT/SPACE_CONSUMER bs=1M \ | 
 | 			>> $seqres.full 2>&1 | 
 | 		sleep $enospc_time | 
 | 	done | 
 | 	echo "Killing fsstress process..." >> $seqres.full | 
 | 	kill $pid >> $seqres.full 2>&1 | 
 | 	wait $pid | 
 | } | 
 |  | 
 | # real QA test starts here | 
 | _supported_fs generic | 
 | _require_scratch | 
 |  | 
 | _scratch_mkfs_sized $((512 * 1024 * 1024)) >> $seqres.full 2>&1 | 
 | _scratch_mount | 
 |  | 
 | if ! _workout; then | 
 | 	_scratch_unmount 2>/dev/null | 
 | 	exit | 
 | fi | 
 |  | 
 | if ! _scratch_unmount; then | 
 | 	echo "failed to umount" | 
 | 	status=1 | 
 | 	exit | 
 | fi | 
 | status=0 | 
 | exit |